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

  1. Python сортирует словарь по значениям - получают только отсортированные значения
  2. Использование operator.itemgetter для сортировки словаря Python
  3. Используя функцию lambda в ключе sorted для сортировки Python по словарю
  4. OrderedDict для получения результата, совместимого со словарем, в сортировке словаря Python

Python словарь - это беспорядочный тип данных, поэтому вы не смогли отсортировать словарь Python по его ключам или значениям. Но вы можете получить представление отсортированного словаря Python в другом типе данных, например, в списке.

Предположим, что у нас есть словарь, как показано ниже,

exampleDict = {'first': 3, 'second': 4, 'third': 2, 'fourth': 1}

Python сортирует словарь по значениям - получают только отсортированные значения

sortedDict = sorted(exampleDict.values())
#Out: [1, 2, 3, 4]

Использование operator.itemgetter для сортировки словаря Python

import operator
sortedDict = sorted(exampleDict.items(), key=operator.itemgetter(1))
#Out: [('fourth', 1), ('third', 2), ('first', 3), ('second', 4)]

exampleDict.items возвращает пару ключевых элементов словаря. key=operator.itemgetter(1) указывает, что ключом сравнения является значение словаря, в то время как operator.itemgetter(0) имеет ключ сравнения ключа словаря.

Используя функцию lambda в ключе sorted для сортировки Python по словарю

Вы также можете использовать функцию lambda для получения ключа сравнения вместо operator.itemgetter.

sortedDict = sorted(exampleDict.items(), key=lambda x: x[1])
#Out: [('fourth', 1), ('third', 2), ('first', 3), ('second', 4)]

exampleDict.items() возвращает список пар ключ-значение словаря и тип данных его элемента - кортеж. x - элемент этого кортежа, где x[0] - ключ, а x[1] - значение. key=lambda x:x[1] указывает на то, что ключом сравнения является значение элементов словаря.

Необязательный параметр reverse может быть установлен как True, если значения необходимо отсортировать в порядке убывания.

sortedDict = sorted(exampleDict.items(), key=lambda x: x[1], reverse=True)
#Out: [('second', 4), ('first', 3), ('third', 2), ('fourth', 1)]

OrderedDict для получения результата, совместимого со словарем, в сортировке словаря Python

Приведенный выше пример кода возвращает результат в виде списка, но не типа словаря. Если вы хотите сохранить результат в виде совместимого со словарем типа, то OrderedDict, введенный с Python 2.7, является правильным выбором.

from collections import OrderedDict
sortedDict = OrderedDict(sorted(exampleDict.items(), key=lambda x: x[1]))
#Out: OrderedDict([('fourth', 1), ('third', 2), ('first', 3), ('second', 4)])

Подкласс OrderedDict - это подкласс Python dict, который поддерживает обычные методы, а также запоминает порядок, в котором ключи вставляются первыми.

Сопутствующая статья - Python dictionary

  • Как проверить наличие ключа в словаре на Python языке
  • Как объединить два словаря на Python 2 и 3
  • Как удалить элемент из словаря Pythonа
  • Как получить ключи от словаря в виде списка на Python
  • comments powered by Disqus