🔎 Как сортировать словарь по значениям в Python
Как сортировать словарь по значениям в Python?
Для сортировки словаря по значениям в Python можно воспользоваться функцией sorted() с параметром key, который указывает на функцию для получения значения, по которому будет происходить сортировка.
dictionary = {'apple': 3, 'banana': 1, 'cherry': 2}
sorted_dict = dict(sorted(dictionary.items(), key=lambda x: x[1]))
print(sorted_dict)
В приведенном примере словарь dictionary сортируется по значениям, где каждый элемент представляет собой пару ключ-значение. Функция sorted() сортирует элементы словаря на основе функции, переданной через параметр key. В данном случае используется лямбда-функция, которая возвращает второй элемент каждой пары (значение), по которому происходит сортировка. Результат сортировки сохраняется в новом словаре sorted_dict.
На выходе будет:
{'banana': 1, 'cherry': 2, 'apple': 3}
Детальный ответ
Как сортировать словарь по значениям в Python
Когда вам требуется отсортировать словарь в Python по значениям, вы можете использовать функцию sorted() и передать в нее словарь и указать ключ сортировки с помощью параметра key. Здесь я покажу вам несколько способов сделать это.
Метод 1: Использование функции sorted() с параметром key
В Python словари неупорядочены, поэтому мы сначала преобразуем словарь в список кортежей с помощью метода items(). Затем мы используем функцию sorted() для сортировки списка кортежей по значению. Мы передаем в функцию sorted() ключ сортировки, указав параметр key в виде lambda-функции, которая возвращает значение кортежа.
my_dict = {'apple': 3, 'banana': 2, 'cherry': 5}
sorted_dict = sorted(my_dict.items(), key=lambda x: x[1])
print(sorted_dict)
Вывод:
[('banana', 2), ('apple', 3), ('cherry', 5)]
Метод 2: Использование функции itemgetter()
Модуль operator предоставляет функцию itemgetter(), которую можно использовать для получения значений из словарных элементов. Мы также преобразуем словарь в список кортежей с помощью метода items(). Затем мы используем функцию sorted() с параметром key, передавая в него функцию itemgetter() с индексом 1 для сортировки списка кортежей по значению.
from operator import itemgetter
my_dict = {'apple': 3, 'banana': 2, 'cherry': 5}
sorted_dict = sorted(my_dict.items(), key=itemgetter(1))
print(sorted_dict)
Вывод:
[('banana', 2), ('apple', 3), ('cherry', 5)]
Метод 3: Использование модуля collections
Модуль collections предоставляет класс OrderedDict, который автоматически упорядочивает элементы словаря. Вы можете создать новый экземпляр OrderedDict и передать ему отсортированный список кортежей, после чего он сохранит порядок сортировки в новом словаре.
from collections import OrderedDict
my_dict = {'apple': 3, 'banana': 2, 'cherry': 5}
sorted_dict = OrderedDict(sorted(my_dict.items(), key=lambda x: x[1]))
print(sorted_dict)
Вывод:
OrderedDict([('banana', 2), ('apple', 3), ('cherry', 5)])
Метод 4: Использование operator.itemgetter()
Модуль operator также предоставляет функцию itemgetter(), которую можно использовать для сортировки словаря по значениям. В этом случае мы используем метод items() для преобразования словаря в список кортежей, а затем применяем функцию itemgetter() с индексом 1 к списку кортежей и передаем его в функцию sorted().
import operator
my_dict = {'apple': 3, 'banana': 2, 'cherry': 5}
sorted_dict = sorted(my_dict.items(), key=operator.itemgetter(1))
print(sorted_dict)
Вывод:
[('banana', 2), ('apple', 3), ('cherry', 5)]
Вывод:
Вы только что узнали несколько способов сортировки словаря по значениям в Python. Вы можете использовать функцию sorted() в сочетании с lambda-функциями или функцией itemgetter() из модуля operator. Также вы можете использовать класс OrderedDict из модуля collections, чтобы создать упорядоченный словарь.