Учебники

Python — словарь

В словаре каждый ключ отделяется от своего значения двоеточием (:), элементы разделяются запятыми, а все это заключено в фигурные скобки. Пустой словарь без каких-либо элементов пишется с помощью двух фигурных скобок, например: {}.

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

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

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

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print "dict['Name']: ", dict['Name']
print "dict['Age']: ", dict['Age']

Когда приведенный выше код выполняется, он дает следующий результат —

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

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

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print "dict['Alice']: ", dict['Alice']

Когда приведенный выше код выполняется, он дает следующий результат —

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

Обновление словаря

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

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8; # update existing entry
dict['School'] = "DPS School"; # Add new entry

print "dict['Age']: ", dict['Age']
print "dict['School']: ", dict['School']

Когда приведенный выше код выполняется, он дает следующий результат —

dict['Age']:  8
dict['School']:  DPS School

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

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

Чтобы явно удалить весь словарь, просто используйте оператор del . Ниже приведен простой пример —

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
del dict['Name']; # remove entry with key 'Name'
dict.clear();     # remove all entries in dict
del dict ;        # delete entire dictionary

print "dict['Age']: ", dict['Age']
print "dict['School']: ", dict['School']

Это дает следующий результат. Обратите внимание, что возникает исключение, потому что после словаря del dict больше не существует —

dict['Age']:
Traceback (most recent call last):
   File "test.py", line 8, in <module>
      print "dict['Age']: ", dict['Age'];
TypeError: 'type' object is unsubscriptable

Примечание. Метод del () обсуждается в следующем разделе.

Свойства словарных ключей

Значения словаря не имеют ограничений. Это может быть любой произвольный объект Python, либо стандартные объекты, либо определяемые пользователем объекты. Однако то же самое не относится к ключам.

Есть два важных момента, которые следует помнить о словарных ключах —

(а) Не допускается более одной записи на ключ. Это означает, что дубликат ключа не допускается. Когда дубликаты ключей встречаются во время назначения, побеждает последнее назначение. Например —

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'}
print "dict['Name']: ", dict['Name']

Когда приведенный выше код выполняется, он дает следующий результат —

dict['Name']:  Manni

(б) Ключи должны быть неизменными. Это означает, что вы можете использовать строки, числа или кортежи в качестве ключей словаря, но что-то вроде [‘key’] не допускается. Ниже приведен простой пример —

#!/usr/bin/python

dict = {['Name']: 'Zara', 'Age': 7}
print "dict['Name']: ", dict['Name']

Когда приведенный выше код выполняется, он дает следующий результат —