Python字典get方法在赋值中的应用

4 投票
4 回答
3246 浏览
提问于 2025-04-16 23:54

大家好,

我正在遍历一个字典,并计算里面每个值出现的次数。为此,我在给另一个字典赋值时使用了 get 方法。但是,这样做时出现了一个语法错误,提示“不能给函数调用赋值”。

counts = {}
mydict = {'a':[1,2,5], 'b': [1,2,10]}
for key,value in mydict.iteritems():
    counts(value[1]) = counts.get(value[1], 0) + 1

为什么赋值的时候会试图指向这个函数,而不是它返回的值呢?

4 个回答

0

把这个:

counts(value[1])

改成这个:

counts[value[1]]

代码看起来像这样:

counts = {}
mydict = {'a':[1,2,5], 'b': [1,2,10]}
for key, value in mydict.iteritems():
    counts[value[1]] = counts.get(value[1], 0) + 1
1

你应该用 counts[value[1]] = ... 代替 counts(value[1]) = ...

2
counts = {}
mydict = {'a':[1,2,5], 'b': [1,2,10]}
for key,value in mydict.iteritems():
    counts[value[1]] = counts.get(value[1], 0) + 1

你需要用方括号,而不是圆括号,来从字典中获取一个项目。

另外,你这样做有点复杂。

from collections import defaultdict

# automatically start each count at zero
counts = defaultdict(int)
# we only need the values, not the keys
for value in mydict.itervalues(): 
    # add one to the count for this item
    counts[value[1]] += 1

或者

# only on Python 2.7 or newer
from collections import Counter

counts = Counter(value[1] for value in mydict.itervalues())

撰写回答