Пропустить до содержимого

Как сортировать словарь по значению в 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 = {'apple': 10, 'orange': 5, 'banana': 7, 'melon': 20}
sorted_d = sorted(d.items())
print(sorted_d)

В этом примере у вас есть словарь d, содержащий несколько пар ключ-значение. Затем вы используете функцию sorted() для сортировки элементов словаря. Метод items() возвращает представление словаря в виде списка кортежей (ключ, значение), которые передаются в sorted(). Результат сортировки записывается в переменную sorted_d, и список отсортированных кортежей выводится на экран.

Вы должны увидеть следующий вывод:

[('apple', 10), ('banana', 7), ('melon', 20), ('orange', 5)]

Как вы можете видеть, словарь был отсортирован по ключам в алфавитном порядке. Если бы вам нужно было отсортировать словарь по значениям, вы могли бы использовать аргумент key функции sorted(). Давайте рассмотрим пример:

sorted_d = sorted(d.items(), key=lambda x: x[1])
print(sorted_d)

В этом примере вы используете аргумент key функции sorted(), чтобы указать, что вы хотите сортировать словарь по второму элементу каждого кортежа (значению). Лямбда-функция lambda x: x[1] означает, что вы хотите сортировать по второму элементу (индекс 1) каждого кортежа. Результат сортировки записывается в переменную sorted_d, и список отсортированных кортежей выводится на экран.

Вы должны увидеть следующий вывод:

[('orange', 5), ('banana', 7), ('apple', 10), ('melon', 20)]

Таким образом, словарь был отсортирован по значениям в порядке возрастания.

Теперь у вас есть все необходимые инструменты, чтобы отсортировать словари в Python. Вы можете выбрать сортировку по ключам или значениям, а также указать свой собственный ключ сортировки с помощью лямбда-функций. Ознакомьтесь с документацией по функции sorted() в официальной документации Python, чтобы получить дополнительную информацию и рассмотреть другие возможности сортировки.

Заключение

Теперь вы знаете, как отсортировать словари в Python! Вы познакомились с функцией sorted(), методом items() для получения представления словаря и аргументом key для указания ключа сортировки. Вы также узнали, как использовать лямбда-функции для создания своих собственных ключей сортировки.

Кроме того, вы рассмотрели некоторые стратегические и производительностные аспекты использования отсортированных словарей и сравнили их производительность с другими структурами данных.

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

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