0

可能重复:
获取“int”对象不可迭代

所以我试图根据其他一些代码向字典添加一个值:

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_sums[k] += value
TypeError: 'int' object is not iterable

这是有道理的,因为 cat_sums[k] = [0] 对于第一次迭代,而 [0] 不是整数,它是一个列表。所以我尝试了这个:

print cat_sums[k[0]]

看看它会输出什么,也就是说,看看我是否应该用 替换cat_sums[k]cat_sums[k[0]]但是这给了我这个:

[]

一个空列表。

那么如何添加到字典 cat_sums 中的值,遍历每个键呢?我在这里做错了什么?

请注意,为了澄清,值将等于某个大于或等于 0 的整数值(虽然,这可能会改变,并且稍后可能允许使用负整数,但目前还不允许)

4

3 回答 3

4

这个数据结构有点混乱。也许你应该尝试不同类型的 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]
于 2012-07-19T21:28:03.737 回答
2

我认为您不想使用defaultdict(list)- 看起来您想要这样做:

dd = defaultdict(int)
for x in y:
    dd[x] += 5

附带说明:if not cat_sums.has_key(k)在 Python 上写为- 但如果我理解正确,则if k not in cat_sums不需要使用 a 。defaultdict(int)

于 2012-07-19T21:29:10.463 回答
0

您正在向列表中添加一个数字。尝试

if not cat_sums.has_key(k):
    cat_sums[k] = [0]
cat_sums[k][0] += value
于 2012-07-19T21:25:14.103 回答