Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在字典上迭代';s值不起作用(错误为';int';对象不是iterable)_Python_List_Dictionary_Iteration - Fatal编程技术网

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复制: