Словарь Python

Словарь — это ещё одна изменяемая модель контейнера, которая может хранить объекты любого типа.

Каждая пара ключ-значение словаряkey:valueразделяется двоеточием:а каждая пара ключ-значение разделяется запятой,а весь словарь заключается в фигурные скобки{}как показано в следующем формате:

d = {key1 : value1, key2 : value2 }

Примечание:dictТак как dict относится к ключевым словам Python и встроенным функциям, не рекомендуется называть переменныеdict。

Ключи обычно уникальны. Если появляется дублирующийся ключ, последняя пара ключ-значение заменит предыдущую. Значения не обязаны быть уникальными.

>>> tinydict = {'a': 1, 'b': 2, 'b': '3'}
>>> tinydict['b']
'3'
>>> tinydict
{'a': 1, 'b': '3'}

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

Простой пример словаря:

tinydict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

Вы также можете создать словарь так:

tinydict1 = { 'abc': 456 } tinydict2 = { 'abc': 123, 98.6: 37 }

Доступ к значениям в словаре

Поместите соответствующий ключ в знакомые квадратные скобки, как в следующем примере:

Пример

#!/usr/bin/python tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} print "tinydict['Name']: ", tinydict['Name'] print "tinydict['Age']: ", tinydict['Age']

Вывод приведенного выше примера:

tinydict['Name']:  Zara
tinydict['Age']:  7

Если вы используете ключ, которого нет в словаре, для доступа к данным, будет выведена ошибка следующим образом:

Пример

#!/usr/bin/python tinydict = {'Name': 'Example', 'Age': 7, 'Class': 'First'} print "tinydict['Alice']: ", tinydict['Alice']

Вывод приведенного выше примера:

tinydict['Alice']: 
Traceback (most recent call last):
  File "test.py", line 5, in <module>
    print "tinydict['Alice']: ", tinydict['Alice']
KeyError: 'Alice'


Изменение словаря

Способ добавить новое содержимое в словарь — добавить новые пары ключ/значение, изменить или удалить существующие пары ключ/значение, как показано в следующем примере:

Пример

#!/usr/bin/python # -*- coding: UTF-8 -*- tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} tinydict['Age'] = 8 # Обновить tinydict['School'] = "EXAMPLE" # Добавить print "tinydict['Age']: ", tinydict['Age'] print "tinydict['School']: ", tinydict['School']
Вывод приведенного выше примера:
tinydict['Age']:  8
tinydict['School']:  EXAMPLE


Удаление элементов словаря

Вы можете удалить отдельный элемент или очистить весь словарь. Для очистки требуется только одна операция.

Чтобы явно удалить словарь, используйте команду del, как в следующем примере:

Пример

#!/usr/bin/python # -*- coding: UTF-8 -*- tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} del tinydict['Name'] # Удалить запись с ключом 'Name' tinydict.clear() # Очистить все записи в словаре del tinydict # Удалить словарь print "tinydict['Age']: ", tinydict['Age'] print "tinydict['School']: ", tinydict['School']

Но это вызовет исключение, потому что после использования 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) Один и тот же ключ не может появляться дважды. Если один и тот же ключ задаётся дважды при создании, запоминается последнее значение, как в следующем примере:

Пример

#!/usr/bin/python tinydict = {'Name': 'Example', 'Age': 7, 'Name': 'Manni'} print "tinydict['Name']: ", tinydict['Name']

Вывод приведенного выше примера:

tinydict['Name']:  Manni

2) Ключи должны быть неизменяемыми, поэтому можно использовать числа, строки или кортежи, но не списки, как в следующем примере:

Пример

#!/usr/bin/python tinydict = {['Name']: 'Zara', 'Age': 7} print "tinydict['Name']: ", tinydict['Name']

Вывод приведенного выше примера:

Traceback (most recent call last):
  File "test.py", line 3, in <module>
    tinydict = {['Name']: 'Zara', 'Age': 7} 
TypeError: unhashable type: 'list'


Встроенные функции и методы словаря

Словарь Python включает следующие встроенные функции:

Порядковый номерФункция и описание
1cmp(dict1, dict2)
Сравнивает элементы двух словарей.
2len(dict)
Подсчитывает количество элементов словаря, то есть общее количество ключей.
3str(dict)
Выводит строковое представление словаря, пригодное для печати.
4type(variable)
Возвращает тип входной переменной. Если переменная является словарём, возвращает тип словаря.

Словарь Python включает следующие встроенные методы:

Порядковый номерФункция и описание
1dict.clear()
Удаляет все элементы в словаре.
2dict.copy()
Возвращает поверхностную копию словаря.
3dict.fromkeys(seq[, val])
Создаёт новый словарь, используя элементы последовательности seq в качестве ключей словаря, а val — в качестве начального значения, соответствующего всем ключам.
4dict.get(key, default=None)
Возвращает значение указанного ключа. Если ключа нет в словаре, возвращает значение по умолчанию.
5dict.has_key(key)
Возвращает true, если ключ есть в словаре dict, иначе возвращает false.Не поддерживается в Python3.
6dict.items()
Возвращает итерируемый массив кортежей (key, value) в виде списка.
7dict.keys()
Возвращает список всех ключей в словаре.
8dict.setdefault(key, default=None)
Аналогично get(), но если ключа нет в словаре, он добавит ключ и установит значение в default.
9dict.update(dict2)
Обновляет пары ключ/значение словаря dict2 в dict.
10dict.values()
Возвращает список всех значений в словаре.
11pop(key[,default])
Удаляет значение, соответствующее заданному ключу в словаре, и возвращает удалённое значение. Значение ключа должно быть указано. В противном случае возвращает значение по умолчанию.
12 popitem()
Возвращает и удаляет последнюю пару ключ-значение в словаре.
Другие расширения