Python 在字典上迭代';s值不起作用(错误为';int';对象不是iterable)
可能重复:Python 在字典上迭代';s值不起作用(错误为';int';对象不是iterable),python,list,dictionary,iteration,Python,List,Dictionary,Iteration,可能重复: 因此,我试图根据一些其他代码向字典添加一个值: if not cat_sums.has_key(k): cat_sums[k] = 0 cat_sums[k] += value 字典如下所示: cat_sums = defaultdict(<type 'list'>, {'composed': [0], 'elated': [0], 'unsure': [0], 'hostile': [0], 'tired': [0], 'depressed'
因此,我试图根据一些其他代码向字典添加一个值:
if not cat_sums.has_key(k):
cat_sums[k] = 0
cat_sums[k] += value
字典如下所示:
cat_sums = defaultdict(<type 'list'>, {'composed': [0], 'elated': [0], 'unsure': [0], 'hostile': [0], 'tired': [0], 'depressed': [0], 'guilty': [0], 'confused': [0], 'clearheaded': [0], 'anxious': [0], 'confident': [0], 'agreeable': [0], 'energetic': [0]})
这很有意义,因为cat_对第一次迭代求和[k]=[0],并且[0]不是整数,它是一个列表。于是我尝试了这个:
print cat_sums[k[0]]
看看它会输出什么,也就是说,看看我是否应该用cat\u sums[k]
替换cat\u sums[k[0]]
,但是这给了我以下的信息:
[]
空名单
那么,如何在字典cat_sums中添加值,遍历每个键?我做错了什么
请注意,为了澄清这一点,该值将等于大于或等于0的某个整数值(不过,这可能会发生变化,并且以后可能允许使用负整数,但现在还不允许)您正在向列表中添加一个数字。试一试
if not cat_sums.has_key(k):
cat_sums[k] = [0]
cat_sums[k][0] += value
您正在向列表中添加一个数字。试一试
if not cat_sums.has_key(k):
cat_sums[k] = [0]
cat_sums[k][0] += value
这个数据结构有点混乱。也许您应该尝试不同类型的defaultdict:
cat_sums=defaultdict(int)
cat_sums[k]+=value
当然,如果要不断向列表中添加元素,请执行以下操作:
cat_sums=defaultdict(list)
cat_sums[k].append(value) #same thing as cat_sums[k]+=[value]
这个数据结构有点混乱。也许您应该尝试不同类型的defaultdict:
cat_sums=defaultdict(int)
cat_sums[k]+=value
当然,如果要不断向列表中添加元素,请执行以下操作:
cat_sums=defaultdict(list)
cat_sums[k].append(value) #same thing as cat_sums[k]+=[value]
我认为您不想使用
defaultdict(list)
-看起来您想做:
dd = defaultdict(int)
for x in y:
dd[x] += 5
旁注:
if not cat\u sums.has_key(k)
是pythonical写的if k not in cat\u sums
-但是如果我理解正确,这不应该需要使用defaultdict(int)
。我认为你不想使用defaultdict(list)
-看起来你想做:
dd = defaultdict(int)
for x in y:
dd[x] += 5
旁注:
if not cat\u sums.has\u key(k)
是pythonical写的if k not in cat\u sums
-但是如果我理解正确,这不应该使用defaultdict(int)
。我想你的意思是cat\u sums[k][0]
而不是cat\u sums[k[0]
。不要使用has\u key>,它已被弃用。使用如果k不在cat_sums中:
由OP复制:我想你的意思是cat_sums[k][0]
而不是cat_sums[k[0]]
。不要使用has_key
,这是不推荐的。如果k不在类别和中,则使用,
由OP复制: