Często może być bardzo przydatny w użyciu namedtuple. Na przykład, masz słownika imię i zdobyć i chcesz posortować „Wynik”:
import collections
Player = collections.namedtuple('Player', 'score name')
d = {'John':5, 'Alex':10, 'Richard': 7}
sortowania z pierwszym najniższym wynikiem:
worst = sorted(Player(v,k) for (k,v) in d.items())
sortowania z najwyższym wynikiem pierwsze:
best = sorted([Player(v,k) for (k,v) in d.items()], reverse=True)
Kolejność "klucza" i "wartości" w wymienionych krotkach to (wartość, klucz), ale teraz możesz uzyskać nazwę i wynik, powiedzmy, drugi najlepszy gracz (indeks = 1) bardzo Pythonically w ten sposób:
player = best[1]
player.name
'Richard'
player.score
7
powielać http://stackoverflow.com/questions/613183/sort-a-dictionary-in-python-by-the-value –
Nie dupe. Drugi chce posortować słownik, co jest niemożliwe. Chcę iterować po słowniku w posortowanej kolejności. – mike
i kod jest dokładnie taki sam. – SilentGhost