Как сортировать Pythonский словарь по значению
- Python сортирует словарь по значениям - получают только отсортированные значения
-
Использование
operator.itemgetter
для сортировки словаря Python -
Используя функцию
lambda
в ключеsorted
для сортировки Python по словарю -
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
, который поддерживает обычные методы, а также запоминает порядок, в котором ключи вставляются первыми.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedInСопутствующая статья - Python Dictionary
- Как проверить наличие ключа в словаре на Python языке
- Как получить все файлы каталога
- Как объединить два словаря на Python 2 и 3
- Как удалить элемент из словаря Pythonа
- Как получить ключи от словаря в виде списка на Python