如何计算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
对不起,我的意思是说数值
答案 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