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

Jinku Hu 30 Январь 2023 18 Апрель 2020
  1. Python сортирует словарь по значениям - получают только отсортированные значения
  2. Использование operator.itemgetter для сортировки словаря Python
  3. Используя функцию lambda в ключе sorted для сортировки Python по словарю
  4. OrderedDict для получения результата, совместимого со словарем, в сортировке словаря Python
Как сортировать 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, который поддерживает обычные методы, а также запоминает порядок, в котором ключи вставляются первыми.

Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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