Найти тему

Основы программирования на языке Python. Приложение 1 к уроку 21. Словари

Доброго времени суток, читатели, зрители моего канала programmer's notes.

Дополнение к уроку 21

Второе дополнение к уроку здесь

Словари в языке программирования Python

Поскольку материалов по словарям достаточно много, будет два текстовых приложения к уроку 21. Это первое.

Прежде всего несколько философских замечаний. Словарь, можно рассматривать как обобщение списка. Доступ к элементам списка осуществляется через индекс - целое число. Со словарями идем дальше: в качестве "индексов" можно использовать: целые числа, вещественные числа, строки, кортежи. Это все неизменяемые типы данных. Индексы в данном случае называются ключами.

Рассмотрим следующий пример

dt = {3.14: 'Число Пи', 2.71: 'Число e', 'Число Пи': 3.14,'Число e': 2.71}
print(dt)
print(dt[3.14])
print(dt['Число e'])

Результат выполнения программы

{3.14: 'Число Пи', 2.71: 'Число e', 'Число Пи': 3.14, 'Число e': 2.71}Число Пи
2.71

Что можно отметить в представленной выше программе?

1. Словарь задается при помощи фигурных скобок, в которых указываются пары: ключ:значение.
2. В качестве ключей можно использовать неизменяемые типы данных (см. выше). В качестве типов данных можно использовать любой тип. Например
dt = {'Адрес': ['Москва', 'Третий проезд', 3, 123]}. Здесь в качестве ключа используется тип строка, а в качестве значения - список. Впрочем в качестве значения можно использовать и словарь.
3. В программе словарь задается также, как и множество с помощью фигурных скобок. Отличие только в том, что в случае словаря в фигурных скобках должны через запятую стоять пары, а не просто значения.
4. Обращаться к элементам словаря можно посредством имени и ключа в квадратных скобках: имя_словаря[ключ]. При этом запомним раз и на всегда: двух одинаковых ключей в словаре быть не может, а вот двух (и трех и четырех и т.д.) значений - пожалуйста.
5. Как обычно, функция print() аккуратно выводит значение типа данных СЛОВАРЬ. Кстати
print(*dt) выдает просто ключи словаря через пробел.

Как задать пустой словарь?

dt = {}

или

dt = dict()

В обоих случаях мы получаем пустой словарь, который в дальнейшем можно будет заполнять. Обратим внимание, что {} именно словарь, а не множество. Для множества есть функция set().

Если у нас есть пустой словарь, как его заполнить?

Ниже представлена программа заполнение словаря из некоторого списка.

promer48.py
promer48.py

Текст программы

primer48.py

Результат выполнения программы

{2: 256, 5: 625, 6: 36, 7: 49, 8: 4096, 1: 1, 9: 81, 10: 100}

Давайте разберем, как работает программа.

Обращаю внимание на запись if t in dc, это проверка наличия ключа со значением t. И так, если ключ уже есть, то мы меняем значение, которое соответствует данному ключу, если ключа нет, то мы добавляем для него значение (dc[t] = t * t). Как видите схема заполнения и корректировки словаря очень проста.

Рассмотрим теперь способы получения элементов словаря.

primer49.py
primer49.py

Текст программы

primer49.py

Результат выполнения программы

3.14 - Число Пи
2.71 - Число e
Число Пи - 3.14
Число e - 2.71
('Петров', 'Михаил') - 55

Что здесь важно отметить? dt.keys() - метод генерирует все ключи данного словаря.

Второй метод, который нам будет интересен, это items(). Перепишем предыдущую программу следующим образом

primer50.py
primer50.py

Текст программы

primer50.py

Результат будет тот же самым. items() в данном случае генерирует пары - ключ, значение.

Для того, что получить значения, не используя ключи имеется метод values() - он генерирует только значения.

primer51.py
primer51.py

Текст программы

primer51.py

Результат выполнения программы

Число Пи
Число e
3.14
2.71
55

Ну и в заключении еще один способ генерации словаря. Для этого служит метод fromkeys(). Рассмотрим программу

dt = dict.fromkeys([1, 2, 3, 4, 5])
print(dt)
dt = dict.fromkeys([1, 2, 3, 4, 5], 'Число')
print(dt)

Результат выполнения программы

{1: None, 2: None, 3: None, 4: None, 5: None}
{1: 'Число', 2: 'Число', 3: 'Число', 4: 'Число', 5: 'Число'}

Как работает метод?

Первым обязательным аргументом его является список ключей словаря. Второй аргумент не обязателен. В результате выполнения метода создается словарь с указанными ключами. Если второго аргумента нет, то все значения None. Если второй аргумент имеется, то этот аргумент становится значением для всех ключей словаря.

Замечание
В некоторых языках программирования объекты, подобные словарям, называются ассоциативными массивами.

На этом все. Это было первое приложение к уроку 21. Будет еще одно. Материал интересный.

Всего наилучшего. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.

Программирование на Python хорошо идет по утрам примерно с 9.00 до 10.00.
Программирование на Python хорошо идет по утрам примерно с 9.00 до 10.00.

#программирование #программисты #языки программирования #python