← Все вопросы

Как отсортировать словарь по значению?

Задан 7 месяцев назад1.4к просмотров3 ответа
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) — он сразу отдаёт пары, отсортированные по убыванию.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект