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

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

[

Сортировка словаря Python: значения, ключи и не только

by Ian Currie


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

В этом учебнике вы изучите:

  • Как использовать функцию sorted()
  • Как получать представления словаря для итерации
  • Как приводятся словари к спискам при сортировке
  • Как указать ключ сортировки для сортировки словаря по значению, ключу или вложенному атрибуту
  • Обзор генераторов словарей и конструктора dict() для восстановления словарей
  • Рассмотрение альтернативных структур данных для хранения ключ-значение

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

Чтобы максимально использовать этот учебник, вам следует знать о словарях, списках, кортежах и функциях. С такими знаниями вы сможете отсортировать словари к концу учебника. Некоторая подготовка к функциям высшего порядка, таким как лямбда-функции, также будет полезна, но это необязательное требование.

Бесплатная загрузка: [Щелкните здесь, чтобы скачать

Сначала вы изучите основные знания перед попыткой сортировки словаря в Python.

Переосмысление порядка словаря в Python

Если раньше вы хотели сохранить упорядоченный словарь в качестве структуры данных, вы использовали collections.OrderedDict из стандартной библиотеки Python. Но с введением новых функциональностей в язык Python, в частности в 3.7 версии, у вас теперь есть возможность сохранить упорядоченность словаря без использования OrderedDict.

Давайте теперь разберемся, как отсортировать словарь в Python.

Сортировка словарей в Python

Python предоставляет несколько способов сортировки словарей. В этом разделе мы рассмотрим различные методы и рассмотрим их примеры кода.

Использование функции sorted()

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

Пример:

numbers = {3: 'c', 1: 'a', 2: 'b'}
sorted_numbers = sorted(numbers)
print(sorted_numbers)

Вывод:

[1, 2, 3]

Обратите внимание, что функция sorted() возвращает список отсортированных ключей словаря.

Получение ключей, значений или их комбинации из словаря

Если вам нужно получить отсортированные ключи, значения или их комбинации из словаря, вы можете использовать методы keys(), values() и items() для получения соответствующих представлений словаря. Затем вы можете передать эти представления функции sorted() для выполнения сортировки.

Примеры:

fruits = {'apple': 1, 'banana': 3, 'cherry': 2}
sorted_keys = sorted(fruits.keys())
print(sorted_keys)
sorted_values = sorted(fruits.values())
print(sorted_values)
sorted_items = sorted(fruits.items())
print(sorted_items)

Вывод:

['apple', 'banana', 'cherry']
[1, 2, 3]
[('apple', 1), ('banana', 3), ('cherry', 2)]

В каждом из этих примеров мы получаем отсортированные представления словаря и выводим их на экран.

Понимание того, как сортирует Python кортежи

Когда словарь сортируется, Python фактически сортирует его список кортежей. Каждый кортеж содержит пару ключ-значение из словаря. По умолчанию Python сортирует кортежи по их первому элементу (ключу). Если ключи в словаре совпадают, то Python будет использовать следующий ключ для сравнения.

Пример:

fruits = {'apple': 3, 'banana': 2, 'cherry': 1}
sorted_tuples = sorted(fruits.items())
print(sorted_tuples)

Вывод:

[('apple', 3), ('banana', 2), ('cherry', 1)]

В данном примере мы получаем отсортированный список кортежей, где каждый кортеж содержит пару ключ-значение из словаря.

Использование параметра key и лямбда-функций

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

Пример:

fruits = {'apple': 3, 'banana': 2, 'cherry': 1}
sorted_keys_descending = sorted(fruits, key=lambda x: fruits[x], reverse=True)
print(sorted_keys_descending)

Вывод:

['apple', 'banana', 'cherry']

В данном примере мы сортируем ключи словаря в порядке убывания их значений.

Выбор вложенного значения с использованием ключа сортировки

Если ваш словарь имеет вложенные значения, вы можете указать ключ сортировки, чтобы выбрать определенное вложенное значение для сравнения и сортировки ключей.

Пример:

fruits = {'apple': {'count': 3}, 'banana': {'count': 2}, 'cherry': {'count': 1}}
sorted_keys = sorted(fruits, key=lambda x: fruits[x]['count'])
print(sorted_keys)

Вывод:

['cherry', 'banana', 'apple']

В данном примере мы сортируем ключи словаря по возрастанию значения ‘count’, которое находится во вложенном словаре.

Преобразование обратно в словарь

Поскольку функция sorted() возвращает отсортированный список, вам может понадобиться преобразовать его обратно в словарь. Для этого вы можете использовать генератор словаря или конструктор dict().

Примеры:

fruits = {'apple': 1, 'banana': 3, 'cherry': 2}
sorted_keys = sorted(fruits)
sorted_dict_1 = {key: fruits[key] for key in sorted_keys}
print(sorted_dict_1)
sorted_dict_2 = dict(sorted(fruits.items()))
print(sorted_dict_2)

Вывод:

{'apple': 1, 'banana': 3, 'cherry': 2}
{'apple': 1, 'banana': 3, 'cherry': 2}

В обоих примерах мы получаем отсортированный словарь, который затем выводим на экран.


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

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