Как сортировать словарь по значению в Python?
Сортировка словаря в Python: значения, ключи и многое другое
Вам понадобилось отсортировать пары ключ-значение в словаре, но вы не получили ожидаемых результатов при передаче словаря в функцию sorted()
. В этом руководстве вы узнаете все, что вам нужно знать, чтобы сортировать словари в Python.
В этом руководстве вы узнаете, как:
- Понять использование функции
sorted()
- Научиться получать представления словаря для итерации
- Понять, как словари приводятся к спискам при сортировке
- Узнать, как указать ключ сортировки, чтобы сортировать словарь по значению, ключу или вложенному атрибуту
- Познакомиться с генераторами словарей и конструктором
dict()
, чтобы восстановить ваши словари - Рассмотреть альтернативные структуры данных для ваших пар ключ-значение
По пути вы также будете использовать модуль timeit
для измерения времени выполнения вашего кода и получения конкретных результатов для сравнения разных методов сортировки ключ-значение. Также вы будете рассматривать, действительно ли отсортированный словарь является вашим лучшим вариантом, так как это не особо распространенный шаблон.
Чтобы получить максимальную пользу от этого руководства, вам следует иметь представление о словарях, списках, кортежах и функциях. Обладая такими знаниями, вы сможете сортировать словари к концу этого руководства. Некоторое знакомство с функциями высшего порядка, такими как лямбда-функции, также будет полезно, но не является обязательным требованием.
Бесплатное скачивание: [Нажмите здесь, чтобы скачать
Сначала вы узнаете некоторые основные сведения, прежде чем пытаться отсортировать словарь в Python.
Восстановление порядка словаря в Python
До версии Python 3.6 словари были по сути неупорядоченными. Словарь Python - это реализация хэш-таблицы, которая традиционно является неупорядоченной структурой данных.
В качестве побочного эффекта компактной реализации словаря в Python 3.6 словари начали сохранять порядок вставки. С версии 3.7 этот порядок вставки гарантирован.
Если вы хотели сохранить упорядоченный словарь в качестве структуры данных до Python 3.6, вам приходилось использовать класс OrderedDict
из модуля collections
. Однако с новыми версиями Python это уже не нужно, поскольку стандартные словари сохраняют порядок вставки.
Теперь, чтобы отсортировать словарь, вы можете использовать функцию sorted()
. Давайте рассмотрим, как это делается. Включите следующий код в свой файл Python:
В этом примере у вас есть словарь d
, содержащий несколько пар ключ-значение. Затем вы используете функцию sorted()
для сортировки элементов словаря. Метод items()
возвращает представление словаря в виде списка кортежей (ключ, значение), которые передаются в sorted()
. Результат сортировки записывается в переменную sorted_d
, и список отсортированных кортежей выводится на экран.
Вы должны увидеть следующий вывод:
Как вы можете видеть, словарь был отсортирован по ключам в алфавитном порядке. Если бы вам нужно было отсортировать словарь по значениям, вы могли бы использовать аргумент key
функции sorted()
. Давайте рассмотрим пример:
В этом примере вы используете аргумент key
функции sorted()
, чтобы указать, что вы хотите сортировать словарь по второму элементу каждого кортежа (значению). Лямбда-функция lambda x: x[1]
означает, что вы хотите сортировать по второму элементу (индекс 1) каждого кортежа. Результат сортировки записывается в переменную sorted_d
, и список отсортированных кортежей выводится на экран.
Вы должны увидеть следующий вывод:
Таким образом, словарь был отсортирован по значениям в порядке возрастания.
Теперь у вас есть все необходимые инструменты, чтобы отсортировать словари в Python. Вы можете выбрать сортировку по ключам или значениям, а также указать свой собственный ключ сортировки с помощью лямбда-функций. Ознакомьтесь с документацией по функции sorted()
в официальной документации Python, чтобы получить дополнительную информацию и рассмотреть другие возможности сортировки.
Заключение
Теперь вы знаете, как отсортировать словари в Python! Вы познакомились с функцией sorted()
, методом items()
для получения представления словаря и аргументом key
для указания ключа сортировки. Вы также узнали, как использовать лямбда-функции для создания своих собственных ключей сортировки.
Кроме того, вы рассмотрели некоторые стратегические и производительностные аспекты использования отсортированных словарей и сравнили их производительность с другими структурами данных.
Однако помните, что отсортированные словари не являются стандартным шаблоном использования в Python, и в большинстве случаев обычные словари вполне достаточны. Используйте отсортированные словари только в тех случаях, когда вам действительно нужен отсортированный порядок элементов.
Надеюсь, что это руководство помогло вам разобраться с сортировкой словарей в Python и дало вам полезные инструменты для работы с ключ-значение данными. Удачи в программировании на Python!