Step 2 (S-15456)

From Stepik Wiki
Revision as of 12:20, 24 July 2017 by Константин Чаркин (Talk | contribs) (test syntaxhighlight)

Jump to: navigation, search

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/">

Ключи словаря должны быть неизменяемыми элементами. Например, ключами могут быть числа, строки, но не могут быть списки, либо другие словари.