在python中计算值

时间:2012-07-02 12:53:40

标签: python

如何计算python中字典中值的出现次数

a = dict()
a['cat'] =      1
a['fish'] =     1
a['dog'] =      2  
a['bat'] =      3
a['aardvark'] = 3
a['lion'] =    4  
a['wallaby'] =  5
a['badger'] =   5

输出预期:

KEY  Count
 1   2
 2   1
 3   2
 4   1
 5   2 

EDIT

对不起,我的意思是说数值

6 个答案:

答案 0 :(得分:3)

我怀疑你想使用collections.Counter;它让你轻松处理大多数计数用例。

from collections import Counter
a = dict()
a['cat'] =      1
a['fish'] =     1
a['dog'] =      2  
a['bat'] =      3
a['aardvark'] = 3
a['lion'] =    4  
a['wallaby'] =  5
a['badger'] =   5

print Counter(a.values())    

输出:Counter({1: 2, 3: 2, 5: 2, 2: 1, 4: 1})

或者,为你格式化一点:

for key, value in Counter(a.values()).most_common():
    print key, value

输出:

1 2
3 2
5 2
2 1
4 1

或者,要完全匹配您的输出

for key, value in sorted(Counter(a.values()).items()):
    print key, value

这里我们按键排序(数字1到5)。

答案 1 :(得分:1)

>>> from collections import Counter
>>> Counter(a.values())
Counter({1: 2, 3: 2, 5: 2, 2: 1, 4: 1})

答案 2 :(得分:1)

一个collections.Counter是这项工作的最佳工具(请参阅Martijn Pieters的回答) - 然而,它是在python 2.7中引入的。如果您需要2.5+解决方案:

from collections import defaultdict
d=defaultdict(int)
for v in a.values():
    d[v]+=1

答案 3 :(得分:0)

如果您想要值的总和:

sum(a.values())

如果您想要出现次数的频率:

from collections import Counter
Counter(a.values()).items()

答案 4 :(得分:0)

我有一种可怕的感觉,虽然不清楚,len(a)可能是一个答案......

然而,也有可能:

from collections import Counter
Counter(a.values())

也很可能。

答案 5 :(得分:0)

您无需导入任何内容即可轻松完成此任务:

results={}
for v in a.values():
   results[v]=results.get(v, 0) + 1

for k,v in results.items():
    print k,v

输出:

1 2
2 1
3 2
4 1
5 2