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

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

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

Основы сортировки словарей в Python

С Python 3.7 словари сохраняют порядок элементов в порядке их добавления. Это означает, что мы можем сортировать словари и сохранять порядок.

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

my_dict = {'b': 2, 'a': 1, 'c': 3}
sorted_dict = dict(sorted(my_dict.items()))
print(sorted_dict)  

#{'a': 1, 'b': 2, 'c': 3}

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

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

my_dict = {'b': 2, 'a': 1, 'c': 3}
sorted_dict = dict(sorted(my_dict.items(), key=lambda item: item[1]))
print(sorted_dict)  

#{'a': 1, 'b': 2, 'c': 3}

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

Для сортировки словаря в обратном порядке (от большего к меньшему) мы можем добавить аргумент reverse=True в функцию sorted().

my_dict = {'b': 2, 'a': 1, 'c': 3}
sorted_dict = dict(sorted(my_dict.items(), key=lambda item: item[1], reverse=True))
print(sorted_dict)  

#{'c': 3, 'b': 2, 'a': 1}

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

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

my_dict = {'b': 2, 'a': 2, 'c': 1}
sorted_dict = dict(sorted(my_dict.items(), key=lambda item: (item[1], item[0])))
print(sorted_dict)  

#{'c': 1, 'a': 2, 'b': 2}

Заключение

Сортировка словарей по значению — это распространенная операция в Python, и, несмотря на то, что она может показаться сложной на первый взгляд, она становится простой и интуитивно понятной, когда вы разберетесь с функцией sorted() и пониманием того, как она работает со словарями. Любой сложности сортировка может быть выполнена с помощью различных комбинаций функции sorted(), функций lambda и кортежей для нескольких уровней сортировки.

Содержание: