Словари в Python — сортировка по ключам

Привет всем! Как я обещал ранее — сегодня мы познакомимся с такой штукой, как сортировка по ключам в словарях. Кроме этого — мы попробуем разобраться с реверсом словаря — поменять местами ключи и их значения 🙂 Итак, поехали!

Прежде, чем разобраться с сортировкой — давайте познакомимся с циклом for, без которого эта самая сортировка не возможна. Цикл for — самый простой, но от этого не менее эффективный метод произвести обход всех элементов, и выполнять программный код для каждого из этих элементов. Переменная цикла, которую определяет пользователь нужна для ссылки на текущий элемент. Звучит несколько запутанно, а потому — посмотрите на код:

где:
spisok = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] — список, состоящий из 10 чисел
for i in spisok: — команда цикла, которая говорит: для каждого итератора i в списке spisok
print (i) — вывести на печать

Вместо списка может быть что угодно, и даже тексты. Например, код, представленный ниже — выведет на экран каждый символ из слов отдельно:

Можно даже вывести их в виде больших букв — для этого нужно использовать метод upper() — о нем я рассказывал чуть раньше, если интересно — можете поэксперементировать 🙂

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

Предположим, у нас имеется словарь, представляющий собой набор данных о сотруднике: имя, фамилия, возраст. Причем, указанные параметры являются ключами (ничто не мешает расширить список этих данных, но сейчас для простоты — работаем с этими тремя). В случае, если мы просто выведем на экран словарь — у нас получится нечто вроде:
{‘Имя’: ‘Василий’, ‘Фамилия’: ‘Иванов’, ‘возраст’: ’30} — что совсем не удобно, тем более, если мы будем работать с бОльшими объемами данных. Вот тут мы и подошли к механизму сортировки, использование которого позволит нам представить эти данные в виде удобоваримого текста:

где:
distionary = { — начало словаря с названием distionary
‘Имя’: ‘Василий’, — пара ‘Ключ-значение’ — Имя — Василий
‘Фамилия’: ‘Иванов’, — пара ‘Ключ значение’ — Фамилия — Иванов
‘возраст’: ’30’, — пара ‘Ключ — значение’ — Возраст — 30
} — конец словаря
for key in sorted(distionary): — цикл, который звучит так: для итератора key в цикле
print (key,’=>’,distionary[key]) — вывести на экран значение ключа key, и из словаря distionary — значение этого ключи.

Согласитесь — результат работы цикла for:
Имя => Василий
Фамилия => Иванов
возраст => 30

выглядит значительно более симпатично, нежели представленный ранее:
{‘Имя’: ‘Василий’, ‘Фамилия’: ‘Иванов’, ‘возраст’: ’30}

Итак, с сортировкой разобрались, а теперь разберемся с инвертированием пары ключ-значение. Иногда бывает так, что нужно поменять местами ключ, и вместо него использовать значение этого ключа. В нашем случае пара ‘Ключ — значение’ выглядит так:
Имя => Василий
Фамилия => Иванов
возраст => 30

в случае инвертирования у нас должна получиться вот такая штука:
30 => возраст
Василий => Имя
Иванов => Фамилия

На самом деле делается это очень просто. Смотрим код:

более подробно его можно представить вот так:
distionary = { — объявляем словарь с названием distionary
‘Имя’: ‘Василий’, — используем пару ‘Ключ-значение’, где Имя — ключ, Василий — значение
‘Фамилия’: ‘Иванов’, — используем пару ‘Ключ-значение’, где Фамилия — ключ, Иванов — значение
‘возраст’: ’30’, — используем пару ‘Ключ-значение’, где Возраст — ключ, 30 — значение
} — конец словаря
print (‘Выводим словарь как есть:’) — вывод уведомления о выводе словаря на экран

for key in distionary: — начинаем цикл for, который производит итерацию по значениям key в словаре distionary
print (key,’=>’,distionary[key]) — выводит на экран пару key — значение ключа
print (‘ ‘) — вывод пустой строки
print (‘Выводим инвертированный словарь:’) — вывод уведомления о выводе на экран инвертированного словаря
new_distionary = {value:key for key, value in distionary.items()} — создаем новый словарь с названием new_distionary, который формируется за счет цикла Значение — Ключ, производит итерацию по ключам и значению в словаре. Для этого используется метод items(), который возвращает список значений (для получения списка ключей используется метод keys() ).
for key in new_distionary: — начинаем цикл for, который итерирует по словарю new_distionary
print (key,’=>’,new_distionary[key]) — выводим на экран ключ (напомню, в новом словаре ключ — это значение из старого словаря), и значение (которое в старом словаре было ключом).

План на следующую запись, посвященную Python — представить код, генерирующий фейковых персонажей с данными: имя, фамилия, возраст, город проживания, номер паспорта, и его серия. К объектно-ориентированному программированию я пока еще не дошел, потому весь код будет работать в Repl.it и являть собой некую теоретическую задачу для работы с генератором случайных чисел, списками и словарями.

Спасибо за внимание!
В случае возникновения вопросов — пишите на почту. И не забывайте сделать репост на свою страницу, если запись понравилась 🙂

Support the Blog!

Running a blog takes a lot of effort, time, and passion. Your donations help improve the content, inspire new ideas, and keep the project going.
If you’ve enjoyed the blog’s materials, any support would mean the world to me. Thank you for being here! ❤️

PayPal Logo Donate via PayPal

Revolut Logo Donate via Revolut