python 用setdefault()或者get()中往字典内插入list类型的值,为什么出错
程序如下:rule_class={}sql="select*fromrules_wordwherestatus=1andaction='only'"rows=db_spa...
程序如下:
rule_class={}
sql="select * from rules_word where status=1 and action='only' "
rows=db_spam.query(sql) #这里返回一个列表形式,里面的元素是字典类型,'name','type'都是key
for row in rows :
exp=row['name']
classify=row['type']
rule_class[classify]=rule_class.setdefault(classify,[]).append(exp)
print rule_class
运行后出错如下:
rule_class[classify]=rule_class.setdefault(classify,[]).append(exp)
AttributeError: 'NoneType' object has no attribute 'append'
该怎么解决呢?
问题已经解决了,其实是赋值语句逻辑不对,应直接改为:
rule_class.setdefault(classify,[]).append(exp)
就可以了 展开
rule_class={}
sql="select * from rules_word where status=1 and action='only' "
rows=db_spam.query(sql) #这里返回一个列表形式,里面的元素是字典类型,'name','type'都是key
for row in rows :
exp=row['name']
classify=row['type']
rule_class[classify]=rule_class.setdefault(classify,[]).append(exp)
print rule_class
运行后出错如下:
rule_class[classify]=rule_class.setdefault(classify,[]).append(exp)
AttributeError: 'NoneType' object has no attribute 'append'
该怎么解决呢?
问题已经解决了,其实是赋值语句逻辑不对,应直接改为:
rule_class.setdefault(classify,[]).append(exp)
就可以了 展开
1个回答
展开全部
从这个错误信息我们能看出的是
rule_class.setdefault(classify,[]) 这个值是None,而不是list
而None是没有append这个属性或方法的,所以报错
那么你要调试,就看看rule_class.setdefault(classify,[])获得这个值的步骤中哪里出错了,
建议,像这种有错误风险的地方
最好加判断
如
if isinstance(rule_class.setdefault(classify,[]), list):#判断其是否为一个list
rule_class[classify]=rule_class.setdefault(classify,[]).append(exp)
rule_class.setdefault(classify,[]) 这个值是None,而不是list
而None是没有append这个属性或方法的,所以报错
那么你要调试,就看看rule_class.setdefault(classify,[])获得这个值的步骤中哪里出错了,
建议,像这种有错误风险的地方
最好加判断
如
if isinstance(rule_class.setdefault(classify,[]), list):#判断其是否为一个list
rule_class[classify]=rule_class.setdefault(classify,[]).append(exp)
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询