2011-08-18 82 views
4

全部,Python字典获取方法

我在字典上循环并计算出现的值。为此,我使用另一个字典的赋值语句中的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 

为什么分配会尝试指向函数而不是返回值?

回答

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()) 
+0

Python的需要块缩进。你的'for'主体没有缩进。 – cdhowie

+0

Python需要缩进?我永远不会知道!这显然只是一个错字。 – agf

+0

我是个白痴,我必须在工作当天停止切换语言。另外,感谢您指出defaultdict位,我没有意识到这一点。 –

1

而不是counts(value[1]) = ...你想要counts[value[1]] = ...

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 
0
counts[value[1]] = counts.get(value[1], 0) + 1 

应该

counts[value[1]] = counts.get(value[1], 0) + 1