Словарь представляет собой набор пар «ключ-значение», которые могут хранить различные типы данных. Однако иногда возникает необходимость отсортировать словарь для удобного доступа и управления данными.
В языке программирования Python есть несколько методов сортировки словаря по ключу. Мы рассмотрим некоторые из них. Сортировка подразумевает упорядочивание элементов словаря, которое может быть выполнено по возрастанию (от меньшего к большему) или по убыванию (от большего к меньшему).
Важно отметить, что до версии Python 3.7, при вставке новой пары «ключ-значение» в словарь, порядок вставок не учитывался. Начиная с версии 3.7, словари запоминают порядок вставки ключей.
Давайте перейдём от теории к практике и посмотрим, как можно сортировать словари по ключу с использованием различных методов.
С использованием метода sorted()
Функция sorted() позволяет отсортировать элементы словаря. В нашем случае нам нужно отсортировать словарь по ключам. Для этого мы будем использовать метод items() вместе с функцией sorted().
Метод items() преобразует словарь в список кортежей, где каждый кортеж содержит пару ключ-значение. Затем мы передаём этот список кортежей в функцию sorted(). Функция sorted() сортирует кортежи на основе первого элемента, который выступает в роли ключа в словаре.
После сортировки мы можем преобразовать список кортежей обратно в словарь, используя метод dict().
Например, у нас есть словарь, где ключ — это название электронного товара, а значение — количество товара на складе. Вот пример:
electronics = {'Headphones': 25, 'Smartphone': 50, 'Laptop': 10, 'Tablet': 20} # items() to convert dict to list of tuples, sorted() to sort the tuples #dict() method to convert back list of tuples to dictionary sorted_electronics = dict(sorted(electronics.items()))
Давайте распечатаем отсортированный словарь, используя приведенный ниже код.
print(sorted_electronics)
Из вывода видно, что словарь отсортирован по ключу в алфавитном порядке.
С использованием метода sort()
Метод sort() похож на метод sorted(), но он изменяет исходный словарь. Метод sorted() создаёт копию исходного словаря, которую затем сортирует в определённом порядке. А метод sort() сортирует исходный список.
Например, можно отсортировать словарь «электроника» с помощью метода sort(). Вот как это выглядит в коде:
electronics = {'Headphones': 25, 'Smartphone': 50, 'Laptop': 10, 'Tablet': 20} # get a list of the dictionary's keys keys = list(electronics.keys()) # sort the list of keys keys.sort() # create a new dictionary with sorted keys sorted_electronics = {key: electronics[key] for key in keys} print(sorted_electronics)
С помощью OrderedDict
OrderedDict — это класс из модулей коллекций Python, который сохраняет порядок добавленных записей. Начиная с Python 3.7, встроенный словарь (dict) также поддерживает порядок вставки элементов. Однако OrderedDict всё ещё полезен благодаря дополнительным функциям, таким как возможность рендеринга.
Давайте рассмотрим пример, как можно отсортировать словарь с помощью OrderedDict, используя следующий код:
# import OrderedDict from collections from collections import OrderedDict electronics = {'Headphones': 25, 'Smartphone': 50, 'Laptop': 10, 'Tablet': 20} # items() to convert dict to list of tuples, sorted() to sort the tuples #OrderedDict() method to constructs the dictionary sorted_ordered_dict = OrderedDict(sorted(electronics.items())) print(sorted_ordered_dict)