2013-07-29 12 views
11

Mam licznik, który wygląda trochę jak ten:sortowania licznik w Pythonie przez klawisze

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

chcę sortować na klucze specjalnie w kolejności alfabetycznej, a nie przez counter.most_common()

jest jakiś sposób na osiągnięcie tego?

+0

Licznik to po prostu słownik, więc należy go uznać za duplikat tego: http://stackoverflow.com/questions/9001509/python-dictionary-sort-by-key –

+0

Czy chcesz je wydrukować? w posortowanej kolejności? –

Odpowiedz

26

Wystarczy użyć sorted:

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

Zgadzam się, wiedząc, że iterator na dyktafonie daje klucze, a nie wartości, wtedy klucze zostaną posortowane. –

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

To działa, jednak itemgetter jest użyteczny do sortowania listy krotek lub listy list, ale na dykcie jest bezużyteczny, posortowany (c) jest równoważny posortowaniu (c.keys()) –

0

W Pythonie 3, można użyć funkcji most_common z collections.Counter:

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

ta wykorzystuje funkcję most_common dostępne w collections.Counter , który pozwala znaleźć klucze i liczby najczęściej używanych kluczy.

Powiązane problemy