Step 2 (S-15456)
Step on Stepik: https://stepik.org/lesson/3373/step/2
<img width="50%" src="https://ucarecdn.com/2fe672aa-0051-426e-bb61-c9d9dbcc9411/">
Словарь позволяет хранить множество пар: ключ - значение. И по первому значению в паре, то есть по ключу, получать соответствующее ему значение. Давайте разберемся, о каких парах идет речь, и зачем такое может понадобится. Обычный список позволяет однозначно идентифицировать элемент по его индексу (по его позиции в списке). Если мы хотим получить значение какого-то конкретного элемента, мы можем указать его индекс и получить соответствующие ему значение. Однако часто идентификатором элемента может являться не число.
Например, мы хотим хранить данные о автомобиле и его владельце. И получать информацию по номеру автомобиля, тогда у нас парой может являться следующая информация: ключом будет являться номер автомобиля (строка из букв и цифр), а значением будет информация об владельце автомобиля (строка - фамилия, имя). Таким образом, словари позволяют получить значение связанных пар, указав в качестве индекса ключ.
d = {'a001aa': 'Ivanov Ivan', 'b999ab': 'Petrov Igor'} d['b999ab'] d['a001aa']
Словарю соответствует структура данных типа dict. Словарь можно создавать разными способами. Пустой словарь можно создать используя ключевое слово dict и вместо значения указать пустые фигурные скобки.
1 d = dict()
2 type(d)
3 s = {}
4 type(s)
Если мы хотим создать словарь, инициализированный некоторыми элементами (не пустой словарь), то мы можем в фигурных скобках перечислить через запятую множество пар (ключ - значение). Для каждой пары ключ указывается слева, далее после двоеточия пишется значение.
d = {'a':239, 10:100} print(d['a']) print(d[10])
Для получения значения из словаря мы указываем имя словаря, после которого в квадратных скобках записывается ключ.
Какие операции можно делать со словарями? Также, как и в случае с множествами, мы можем проверять: есть ли ключ в словаре с помощью конструкций in или not in. Результатом будет логическое выражение - True или False.
d = {'a':239, 10:100} 'a' in d 10 in d
<img width="50%" src="https://ucarecdn.com/a3215509-6298-45f3-b9e2-f87b125a1677/">
Мы можем добавить пару ключ - значение в словарь.
d['c'] = 42
Для этого мы явно указываем, что в словаре d по ключу 'c' мы помещаем значение 42. После этой операции данные будут добавлены в словарь и к ним можно будет обратиться по ключу.
d['c']
Если ключ отсутствует в словаре возникнет ошибка.
d['e']
Метод словаря get, позволяет получить по переданному ему ключу значение, если такой ключ есть в словаре, либо вернет специальное значение None, если ключ отсутствует.
d.get('c') d.get('e')
Элементы словаря можно удалять. Для этого используется функцию del. При этом данные удаляются целиком (и пара, и значение).
del d['c']
Словари являются изменяемым типом данных, мы можем добавлять элементы в словарь и удалять элементы из него. Также, как и множества, словари не имеют порядка элементов. Если мы попробуем вывести элементы словаря, порядок вывода будет отличаться от порядка, в котором мы добавляли элементы в словарь.
<img width="50%" src="https://ucarecdn.com/76fd9412-3c3a-4163-88d6-317f9cfb2541/"> Все ключи словаря различны, если мы попытаемся добавить значение по уже существующему ключу, то предыдущее значение будет затерто.
print(d['c']) d['c'] = 99 print(d['c'])
<img width="50%" src="https://ucarecdn.com/a4935fe5-df5d-4939-bc46-4cf21a67f5f5/">
<img width="50%" src="https://ucarecdn.com/fb8702cf-a353-4e8b-bd2e-4d79dcead98e/">
Ключи словаря должны быть неизменяемыми элементами. Например, ключами могут быть числа, строки, но не могут быть списки, либо другие словари.