В Python присутствует возможность хранить определенную информацию в словарях. Словарь в Питоне — это способ сохранить данные, используя форму «ключ-значение». Каждому отдельному ключу соответствует определенное значение. Данные в словаре изменяемые, поэтому структура в словарях чаще всего неупорядоченная. Для того чтобы упорядочить данные, используется сортировка словаря Python по ключу или значению.
Значения в словаре могут быть разными и даже повторяющимися, а ключ всегда уникальный. Словарь в Python обозначается фигурными скобками, а сохраняемые пары «ключ-значение» отделяются запятой. Вот как выглядит примитивный словарь Python в коде:
myDictionary = {'name': 'Дормидонт', 'age': 101, 'profession': 'владелец компании' }
Словарь очень похож на список Python, но отличается от него более легким поиском элементов, поэтому словарь считается быстрее списка. Однако, чтобы удобно работать со словарем, нужна сортировка словаря. Именно об этом мы сегодня и поговорим.
Сортировка словаря Python
Сортировка словаря Python возможна как по ключам, так и по значениям списка. Для этого в Питоне присутствуют специальная функция «sorted()» и встроенные функции, обозначающие вид сортировки:
keys() — для сортировки словаря по ключам;
values() — для сортировки словаря по значениям.
Сортировка словаря Python по ключам
Это наиболее правильный вид сортировки, потому что обращаться к элементам словаря можно только по ключам. Когда осуществляется сортировка словаря Python по значениям, приходится немного «потрудиться», потому что напрямую только к значениям словаря Питона обратиться нельзя. Об этом чуть ниже, а пока — вот как осуществляется сортировка словаря Python по ключам с использованием функции «keys()»:
names = {1:'Алиса' ,2:'Иван' ,4:'Петр' ,3:'Андрей' ,6:'Дормидонт' ,5:'Яна}
#выводим отсортированные ключи словаря
print(sorted(names.keys()))
#выводим отсортированный словарь целиком
print(sorted(names.items()))
В результате мы получим следующее:
#отсортированные ключи словаря
[1, 2, 3, 4, 5, 6]
#отсортированный словарь
[(1, 'Алиса'), (2, 'Иван'), (3, 'Андрей'), (4, 'Петр'), (5, 'Яна'), (6, 'Дормидонт')]
Фактически при таком подходе сортировки словаря происходит создание списка ключей, потом ключи сортируются. При необходимости можно вывести либо отсортированные ключи, либо весь словарь.
Сортировка словаря Python по значениям
Этот вид сортировки немного сложнее предыдущего, потому что:
напрямую к значениям обратиться сложно;
используя данный вид сортировки, невозможно отсортировать информацию в том же словаре, поэтому создается новый словарь с отсортированными значениями.
Как это выглядит в коде:
myDictionary = {1: 3, 2: 10, 3: 5}
sorted_values = sorted(myDictionary.values()) #Сортировка словаря Python по значению
new_sorted_dictionary = {}
for i in sorted_values:
for k in myDictionary.keys():
if myDictionary[k] == i:
new_sorted_dict[k] = myDictionary[k]
break
print(new_sorted_dict)
Если запустить код, описанный выше, тогда в результате мы получим следующее:
{1: 1, 3: 5, 2: 10}
Несложно заметить, что сортировка словаря Python по ключу отличается от сортировки словаря Python по значению. Если внимательно разобрать код, который описан выше, тогда видно, что изначально словарь у нас был отсортирован по ключам. После сортировки по значениям расположение элементов словаря стало другим, то есть разные виды сортировки дают разную структуру словарю, но главное, что в обоих случаях это структурированный словарь.
На практике получается, что выбирать вид сортировки словаря нужно, отталкиваясь от того, что для вас важнее: ключ или значение в словаре.
Заключение
Сегодня мы показали, как происходит сортировка словаря Python по ключу и по значению. Разные виды сортировки дают разный конечный результат, поэтому выбор алгоритма сортировки имеет значение.
Раньше словарь Python приходилось сортировать, используя циклы «for», в этом случае код очень сильно «раздувался». Но с приходом специальной функции «sorted()» сортировка словаря Python стала более компактной и понятной.
Python