2012-02-22 14 views

答えて

9

を書くために助けてください辞書 で二回表示されます。

>>> 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

(大規模な辞書の場合は、Py。2.xでは '.itervalues()'がより効率的かもしれません) – Amber

+0

良い点。しかし、私は個人的にPython 3を使っているので、 'values'は両方のバージョンで動作しますので、Python 2のプログラマが変わった場合のリストに必要な変更を追加します; – phihag

+0

Yup。 :)あなたがあなたの答えを変えることを示唆するのではなく、将来の読者のためにそれを指摘していただけでした。 – Amber

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'がどのように使われていないのか気づきましたか? –

関連する問題