Создать список именованных кортежей
Часто очень удобно использовать namedtuple . Например, у вас есть словарь «имя» в качестве ключей и «оценка» в качестве значений, таких как:
d = {'John':5, 'Alex':10, 'Richard': 7}
Вы можете перечислить элементы в виде кортежей, отсортировать, если хотите, и получить имя и счет, скажем, игрока с наибольшим количеством очков (индекс = 0), очень Pythonically, как это:
>>> player = best[0]
>>> player.name
'Alex'
>>> player.score
10
Как это сделать:
список в случайном порядке или в порядке коллекций. OrdderedDict :
import collections
Player = collections.namedtuple('Player', 'name score')
players = list(Player(*item) for item in d.items())
по порядку, отсортировано по значению («оценка»):
import collections
Player = collections.namedtuple('Player', 'score name')
отсортировано с наименьшим количеством баллов:
worst = sorted(Player(v,k) for (k,v) in d.items())
отсортировано с наибольшим количеством баллов:
best = sorted([Player(v,k) for (k,v) in d.items()], reverse=True)