Python: Сортировка словаря по значениям

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

Сортировка словаря может иметь огромные преимущества. Представьте, что вы храните информацию о клиентах по имени. Сортировка данных значительно снижает их сложность, делая данные проще для работы.

Оглавление

Зачем сортировать словарь Python

Словари Python — это невероятно полезные структуры данных. Они хранят данные в парах ключ:значение, что позволяет легко извлекать данные. Начиная с Python 3.7, словари Python стали упорядоченными, что означает, что их порядок можно изменить для повышения эффективности.

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

Нужно проверить, существует ли ключ в словаре Python? Ознакомьтесь с этим руководством, которое учит пяти различным способам проверки существования ключа в словаре Python, включая возврат значения по умолчанию.

Сортировка словаря Python по значениям с использованием dict.items и sorted

Функция sorted() Python позволяет нам, ну, сортировать элемент. Функция sorted() принимает три параметра:

  • iterable: Элемент для сортировки

  • key: Ключ для сортировки

  • reverse: Сортировать в обратном порядке или нет

Ключ — это метод, по которому сортируются данные. По сути, это функция, которая оценивается для сравнения с тем, как сортировать.

Поскольку мы хотим сравнивать значения элементов, мы будем использовать key=item.get, который возвращает значение ключа.

Давайте посмотрим, как это выглядит на практике:

# Сортировка словаря по значениям с использованием sorted()

sales = {
    'apples': 12,
    'bananas': 32,
    'oranges': 24,
    'grapes': 43,
    'tangerines': 55
}

sorted = sorted(sales, key=sales.get)
sorted_dict = {}
for key in sorted:
    sorted_dict[key] = sales[key]

print(sorted_dict)

# Возвращает: {'apples': 12, 'oranges': 24, 'bananas': 32, 'grapes': 43, 'tangerines': 55}

Давайте посмотрим, что мы сделали. Мы сгенерировали список, используя функцию sorted(), которая возвращает значения в порядке возрастания. Затем мы прошли циклом по сгенерированным новым парам ключ:значение в нашем новом словаре sorted_dict.

Мы также можем пропустить шаг сначала создания списка, а затем прохождения по нему, используя слегка измененную функцию reverse(). Давайте посмотрим, как мы можем сократить это:

# Сортировка словаря по значениям с использованием sorted()

sales = {
    'apples': 12,
    'bananas': 32,
    'oranges': 24,
    'grapes': 43,
    'tangerines': 55
}

sorted = dict(sorted(sales.items(), key=lambda x: x[1]))

print(sorted)

# Возвращает: {'apples': 12, 'oranges': 24, 'bananas': 32, 'grapes': 43, 'tangerines': 55}

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

  • Мы передаем sales.items(), который возвращает кортежи пар ключ:значение

  • Затем мы используем лямбда-функцию, которая захватывает второй элемент в паре (значение)

  • Наконец, мы превращаем это обратно в словарь с помощью функции dict()

Если мы хотим отсортировать значения в порядке убывания, можно также передать аргумент reverse=True.

В следующем разделе вы узнаете, как использовать цикл for Python для сортировки словаря по значениям.

Сортировка словаря Python по значениям с использованием цикла for

В этом разделе вы узнаете, как использовать цикл for Python для сортировки словаря по значениям.

Мы снова используем функцию reverse() Python и проходим циклом по сгенерированному списку кортежей. Затем мы присваиваем новые пары ключ:значение словарю, который будет хранить наш отсортированный словарь.

Давайте посмотрим, как это можно сделать в Python:

# Сортировка словаря по значениям с использованием sorted() и цикла for

sales = {
    'apples': 12,
    'bananas': 32,
    'oranges': 24,
    'grapes': 43,
    'tangerines': 55
}

sorted_dict = {}
for key, value in sorted(sales.items(), key=lambda x: x[1]):
    sorted_dict[key] = value
print(sorted_dict)

# Возвращает: {'apples': 12, 'oranges': 24, 'bananas': 32, 'grapes': 43, 'tangerines': 55}

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

В следующем разделе вы узнаете, как сортировать словарь по значениям с использованием включения словаря Python.

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

Мы можем превратить вышеуказанный цикл for в включение словаря, что сокращает количество кода, который нам нужно написать. Фактически, превращение этого в включение словаря делает весь код более читаемым.

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

Ниже представлена легко читаемая схема включений словаря Python:

Давайте посмотрим, как использовать включение словаря Python для сортировки словаря по значениям:

# Сортировка словаря по значениям с использованием sorted() и включения словаря

sales = {
    'apples': 12,
    'bananas': 32,
    'oranges': 24,
    'grapes': 43,
    'tangerines': 55
}

sorted_dict = {key: value for key, value in sorted(sales.items(), key=lambda x: x[1])}
print(sorted_dict)

# Возвращает: {'apples': 12, 'oranges': 24, 'bananas': 32, 'grapes': 43, 'tangerines': 55}

Заключение

В этом учебном пособии вы узнали, как сортировать словарь Python по значениям. Вы узнали, как это делать с использованием метода dict.items(), цикла for, включения списка и лямбда-функции.

Чтобы узнать больше о словарях Python, ознакомьтесь с официальной документацией здесь.

Last updated