Создать список namedtuples
Часто бывает очень удобно использовать namedtuple . Например, у вас есть словарь «имя» в качестве ключей и «оценка» в качестве таких значений, как:
d = {'John':5, 'Alex':10, 'Richard': 7}
Вы можете перечислить элементы как кортежи, отсортированные, если хотите, и получить имя и оценку скажем, игрок с наивысшим результатом (index = 0) очень Pythonically:
>>> player = best[0]
>>> player.name
'Alex'
>>> player.score
10
Как это сделать:
список в случайном порядке или порядок хранения collections.OrderedDict :
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)