Доброго времени суток, читатели, зрители моего канала 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().
Если у нас есть пустой словарь, как его заполнить?
Ниже представлена программа заполнение словаря из некоторого списка.
Текст программы
Результат выполнения программы
{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). Как видите схема заполнения и корректировки словаря очень проста.
Рассмотрим теперь способы получения элементов словаря.
Текст программы
Результат выполнения программы
3.14 - Число Пи
2.71 - Число e
Число Пи - 3.14
Число e - 2.71
('Петров', 'Михаил') - 55
Что здесь важно отметить? dt.keys() - метод генерирует все ключи данного словаря.
Второй метод, который нам будет интересен, это items(). Перепишем предыдущую программу следующим образом
Текст программы
Результат будет тот же самым. items() в данном случае генерирует пары - ключ, значение.
Для того, что получить значения, не используя ключи имеется метод values() - он генерирует только значения.
Текст программы
Результат выполнения программы
Число Пи
Число 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