A menudo puede ser muy útil usar namedtuple. Por ejemplo, usted tiene un diccionario de nombre y puntuación y que desea ordenar en 'puntuación':
import collections
Player = collections.namedtuple('Player', 'score name')
d = {'John':5, 'Alex':10, 'Richard': 7}
clasificación con baja puntuación primera:
worst = sorted(Player(v,k) for (k,v) in d.items())
clasificación con puntuación más alta primero:
best = sorted([Player(v,k) for (k,v) in d.items()], reverse=True)
El orden de 'clave' y 'valor' en las tuplas enumeradas es (valor, clave), pero ahora puede obtener el nombre y puntaje de, digamos, el segundo mejor jugador (índice = 1) muy Pythonically como este:
player = best[1]
player.name
'Richard'
player.score
7
duplicar http://stackoverflow.com/questions/613183/sort-a-dictionary-in-python-by-the-value –
No es una víctima. El otro quiere ordenar un diccionario, lo cual es imposible. Quiero iterar sobre un diccionario en un orden ordenado. – mike
y el código es exactamente el mismo. – SilentGhost