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

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

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

#### Оглавление

* [Зачем сортировать словарь Python](#zachem-sortirovat-slovar-python)
* [Сортировка словаря Python по значениям с использованием dict.items и sorted](#sortirovka-slovarya-python-po-znacheniyam-s-ispolzovaniem-dict.items-i-sorted)
* [Сортировка словаря Python по значениям с использованием цикла for](#sortirovka-slovarya-python-po-znacheniyam-s-ispolzovaniem-cikla-for)
* [Сортировка словаря Python по значениям с использованием включения словаря](#sortirovka-slovarya-python-po-znacheniyam-s-ispolzovaniem-vklyucheniya-slovarya)
* [Заключение](#zaklyuchenie)

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

<mark style="color:purple;">**Словари Python**</mark> — это невероятно полезные структуры данных. Они хранят данные в парах ключ:значение, что позволяет легко извлекать данные. Начиная с Python 3.7, словари Python стали упорядоченными, что означает, что их порядок можно изменить для повышения эффективности.

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

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

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

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

* `iterable`: Элемент для сортировки
* `key`: Ключ для сортировки
* `reverse`: Сортировать в обратном порядке или нет

<mark style="color:blue;">**Ключ**</mark> — это метод, по которому сортируются данные. По сути, это функция, которая оценивается для сравнения с тем, как сортировать.

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

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

```python
# Сортировка словаря по значениям с использованием 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()`. Давайте посмотрим, как мы можем сократить это:

```python
# Сортировка словаря по значениям с использованием 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:

```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 в включение словаря, что сокращает количество кода, который нам нужно написать. Фактически, превращение этого в включение словаря делает весь код более читаемым.

Новичок в включениях словаря? Ознакомьтесь с моим подробным учебником по ним [здесь](https://chat.mistral.ai/chat/34978794-601d-497f-9086-8e3cb46f056d), который охватывает все, что вам нужно знать.

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



<figure><img src="https://3188902851-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ8ZgobqrSJWaGpehFarf%2Fuploads%2F4RvucfvB6nE8KZs8RQEm%2FPython-Dictionary-Comprehension-Syntax.png?alt=media&#x26;token=25f3e1a0-5689-475f-ac9e-30cbd658fa03" alt=""><figcaption></figcaption></figure>

Давайте посмотрим, как использовать включение словаря 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, ознакомьтесь с официальной документацией [здесь](https://chat.mistral.ai/chat/34978794-601d-497f-9086-8e3cb46f056d).
