Словарь Python
Словарь — это ещё одна изменяемая модель контейнера, которая может хранить объекты любого типа.
Каждая пара ключ-значение словаряkey:valueразделяется двоеточием:а каждая пара ключ-значение разделяется запятой,а весь словарь заключается в фигурные скобки{}как показано в следующем формате:
Примечание:dictТак как dict относится к ключевым словам Python и встроенным функциям, не рекомендуется называть переменныеdict。
Ключи обычно уникальны. Если появляется дублирующийся ключ, последняя пара ключ-значение заменит предыдущую. Значения не обязаны быть уникальными.
>>> tinydict['b']
'3'
>>> tinydict
{'a': 1, 'b': '3'}
Значения могут быть любого типа данных, но ключи должны быть неизменяемыми, например строки, числа или кортежи.
Простой пример словаря:
Вы также можете создать словарь так:
Доступ к значениям в словаре
Поместите соответствующий ключ в знакомые квадратные скобки, как в следующем примере:
Пример
Вывод приведенного выше примера:
tinydict['Name']: Zara tinydict['Age']: 7
Если вы используете ключ, которого нет в словаре, для доступа к данным, будет выведена ошибка следующим образом:
Пример
Вывод приведенного выше примера:
tinydict['Alice']:
Traceback (most recent call last):
File "test.py", line 5, in <module>
print "tinydict['Alice']: ", tinydict['Alice']
KeyError: 'Alice'
Изменение словаря
Способ добавить новое содержимое в словарь — добавить новые пары ключ/значение, изменить или удалить существующие пары ключ/значение, как показано в следующем примере:
Пример
tinydict['Age']: 8 tinydict['School']: EXAMPLE
Удаление элементов словаря
Вы можете удалить отдельный элемент или очистить весь словарь. Для очистки требуется только одна операция.
Чтобы явно удалить словарь, используйте команду del, как в следующем примере:
Пример
Но это вызовет исключение, потому что после использования del словарь больше не существует:
tinydict['Age']:
Traceback (most recent call last):
File "test.py", line 10, in <module>
print "tinydict['Age']: ", tinydict['Age']
NameError: name 'tinydict' is not defined
Примечание:Метод del() также будет рассмотрен позже.
Особенности ключей словаря
Значения словаря могут быть любым объектом Python без ограничений — как стандартными, так и пользовательскими, но ключи — нет.
Два важных момента, которые нужно запомнить:
1) Один и тот же ключ не может появляться дважды. Если один и тот же ключ задаётся дважды при создании, запоминается последнее значение, как в следующем примере:
Пример
Вывод приведенного выше примера:
tinydict['Name']: Manni
2) Ключи должны быть неизменяемыми, поэтому можно использовать числа, строки или кортежи, но не списки, как в следующем примере:
Пример
Вывод приведенного выше примера:
Traceback (most recent call last):
File "test.py", line 3, in <module>
tinydict = {['Name']: 'Zara', 'Age': 7}
TypeError: unhashable type: 'list'
Встроенные функции и методы словаря
Словарь Python включает следующие встроенные функции:
| Порядковый номер | Функция и описание |
|---|---|
| 1 | cmp(dict1, dict2) Сравнивает элементы двух словарей. |
| 2 | len(dict) Подсчитывает количество элементов словаря, то есть общее количество ключей. |
| 3 | str(dict) Выводит строковое представление словаря, пригодное для печати. |
| 4 | type(variable) Возвращает тип входной переменной. Если переменная является словарём, возвращает тип словаря. |
Словарь Python включает следующие встроенные методы:
| Порядковый номер | Функция и описание |
|---|---|
| 1 | dict.clear() Удаляет все элементы в словаре. |
| 2 | dict.copy() Возвращает поверхностную копию словаря. |
| 3 | dict.fromkeys(seq[, val]) Создаёт новый словарь, используя элементы последовательности seq в качестве ключей словаря, а val — в качестве начального значения, соответствующего всем ключам. |
| 4 | dict.get(key, default=None) Возвращает значение указанного ключа. Если ключа нет в словаре, возвращает значение по умолчанию. |
| 5 | dict.has_key(key) Возвращает true, если ключ есть в словаре dict, иначе возвращает false.Не поддерживается в Python3. |
| 6 | dict.items() Возвращает итерируемый массив кортежей (key, value) в виде списка. |
| 7 | dict.keys() Возвращает список всех ключей в словаре. |
| 8 | dict.setdefault(key, default=None) Аналогично get(), но если ключа нет в словаре, он добавит ключ и установит значение в default. |
| 9 | dict.update(dict2) Обновляет пары ключ/значение словаря dict2 в dict. |
| 10 | dict.values() Возвращает список всех значений в словаре. |
| 11 | pop(key[,default]) Удаляет значение, соответствующее заданному ключу в словаре, и возвращает удалённое значение. Значение ключа должно быть указано. В противном случае возвращает значение по умолчанию. |
| 12 | popitem() Возвращает и удаляет последнюю пару ключ-значение в словаре. |