← Все вопросы
Как отсортировать словарь по значению?
22
Есть словарь {'a': 3, 'b': 1, 'c': 2}. Нужно получить его отсортированным по значениям (по возрастанию и по убыванию). Как?
3 ответа
31
✓ Принятый ответ — помог автору
Через sorted с key:
d = {'a': 3, 'b': 1, 'c': 2}
# по возрастанию значений -> новый dict
res = dict(sorted(d.items(), key=lambda x: x[1]))
# {'b': 1, 'c': 2, 'a': 3}
# по убыванию
res = dict(sorted(d.items(), key=lambda x: x[1], reverse=True))
d.items() даёт пары (ключ, значение), а lambda x: x[1] говорит сортировать по второму элементу пары — по значению. Оборачиваем обратно в dict, потому что словари с 3.7 хранят порядок вставки.
Кирилл Борисов лямбда x[1] наконец встала на место в голове, спасибо 🙏 · 6 месяцев назад
8
dict(sorted(d.items(), key=lambda x: x[1])).
5
Если нужен только топ-N по значению, удобнее collections.Counter и его .most_common(n) — он сразу отдаёт пары, отсортированные по убыванию.
Ваш ответ
Войдите, чтобы ответить на вопрос.