2012-02-22 174 views
3

我已經有包含這樣的值的字典 {a:3,b:9,c:88,d:3} 我想計算特定數字出現在上面字典中的次數。 例如,在上述詞典3字典 出現兩次請幫忙寫python腳本計算字典中的值的頻率

回答

9

你應該使用collections.Counter

>>> from collections import Counter 
>>> d = {'a':3, 'b':9, 'c':88, 'd': 3} 
>>> Counter(d.values()).most_common() 
[(3, 2), (88, 1), (9, 1)] 
+1

(對於大型辭書,'.itervalues()'可能是PY 2.X更有效) – Amber 2012-02-22 18:55:50

+0

好一點。但是因爲我個人使用Python 3,並且'values'恰好適用於這兩個版本,所以我只是將必要的更改添加到Python 2程序員必須解決的怪癖列表中;) – phihag 2012-02-22 19:02:02

+0

是的。 :)只是注意到未來的讀者,而不是建議你改變你的答案。 – Amber 2012-02-22 21:11:17

1

我會使用一個defaultdict做到這一點(基本的更一般的版本櫃檯)。這已經在2.4以來。

from collections import defaultdict 
counter = defaultdict(int) 

b = {'a':3,'b':9,'c':88,'d':3} 
for k,v in b.iteritems(): 
    counter[v]+=1 

print counter[3] 
print counter[88] 

#will print 
>> 2 
>> 3 
+2

使用'itervalues' ...注意你的代碼片段中沒有使用'k'嗎? – 2012-02-22 19:47:02