2013-07-29 18 views
11

tuşları ile Python sayaç sıralama:Böyle biraz görünen bir sayaç var

Counter: {('A': 10), ('C':5), ('H':4)} 

Özellikle alfabetik sırayla tuşlarını sıralamak istiyorsanız, DEĞİL counter.most_common()

gereğidir orada herhangi Bunu başarmanın yolu?

+0

A Sayaç temel olarak sadece bir sözlüktür, bu gerçekten bunun bir kopyası olarak düşünülmelidir: http://stackoverflow.com/questions/9001509/python-dictionary-sort-by-key –

+0

Bunları yazdırmak ister misiniz? sıralanmış bir sırayla? –

cevap

26

Sadece sorted kullanın:

x = ['a', 'b', 'c', 'c', 'c', 'd', 'd'] 
counts = collections.Counter(x) 
counts.most_common(len(counts)) 

Bu collections.Counter mevcut most_common fonksiyonunu kullanır:

>>> from collections import Counter 
>>> counter = Counter({'A': 10, 'C': 5, 'H': 7}) 
>>> counter.most_common() 
[('A', 10), ('H', 7), ('C', 5)] 
>>> sorted(counter.items()) 
[('A', 10), ('C', 5), ('H', 7)] 
+0

Bir dict üzerindeki yineleyicinin değerleri değil anahtarları getirdiğini bildiğimi kabul ediyorum, sonra tuşlar sıralanacak. –

6
>>> from operator import itemgetter 
>>> from collections import Counter 
>>> c = Counter({'A': 10, 'C':5, 'H':4}) 
>>> sorted(c.items(), key=itemgetter(0)) 
[('A', 10), ('C', 5), ('H', 4)] 
+2

Bu çalışır, ancak, itemgetter bir liste veya liste listesi sıralamak için yararlıdır, ancak bir dict üzerinde işe yaramaz, sıralanmış (c) sıralanmış (c.keys()) eşdeğerdir –

0

Python 3, sen collections.Counter ait most_common fonksiyonunu kullanabilirsiniz En sık kullanılan anahtarların anahtarlarını ve sayılarını n bulmanızı sağlar.