Как заказать словарь на основе значения? - PullRequest
2 голосов
/ 25 ноября 2010

У меня есть словарь типа

tel = {'jack': 18, 'sape': 4139, 'sar': 2139, 'mape': 319, 'sipe': 29}

Я хочу упорядочить его по значению в порядке убывания, например

tel = {'sape': 4139, 'sar': 2139, 'mape': 319, 'sipe': 29 'jack': 18}

Я много искал в Интернете и нашел несвязанные результаты.Есть ли там какая-нибудь встроенная функция или иным образом?

Ответы [ 3 ]

3 голосов
/ 25 ноября 2010

В Python 2.7 или 3.1 вы можете использовать OrderedDict:

from collections import OrderedDict
from operator import itemgetter
tel = {'jack': 18, 'sape': 4139, 'sar': 2139, 'mape': 319, 'sipe': 29}
newtel = OrderedDict(sorted(tel.items(), key=itemgetter(1), reverse=True))

Дополнительные примеры можно найти в Что нового документ.

РЕДАКТИРОВАТЬ: теперь используетсяitemgetter вместо лямбды, чтобы порадовать тех, кому небезразлично.Прошу прощения у тех, кто нашел это более понятным по-старому.

3 голосов
/ 25 ноября 2010

Нет способа заказать dict. Либо используйте упорядоченный словарь, либо какую-то другую упорядоченную последовательность.

sorted(tel.iteritems(), key=operator.itemgetter(1), reverse=True)
1 голос
/ 25 ноября 2010
import operator
sorted(my_dict.iteritems(), key=operator.itemgetter(1))

и это может быть полезно .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...