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
Note - метод del () обсуждается в следующем разделе.
Свойства ключей словаря
Словарные значения не имеют ограничений. Они могут быть любым произвольным объектом Python, либо стандартными объектами, либо объектами, определяемыми пользователем. Однако это не относится к ключам.
О ключах словаря нужно помнить два важных момента:
(a)Не допускается более одной записи на ключ. Это означает, что дублирование ключа не допускается. Если во время назначения встречаются повторяющиеся ключи, побеждает последнее назначение. Например -
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'}
print "dict['Name']: ", dict['Name']
Когда приведенный выше код выполняется, он дает следующий результат:
dict['Name']: Manni
(b)Ключи должны быть неизменными. Это означает, что вы можете использовать строки, числа или кортежи в качестве ключей словаря, но что-то вроде ['key'] недопустимо. Ниже приводится простой пример -
#!/usr/bin/python
dict = {['Name']: 'Zara', 'Age': 7}
print "dict['Name']: ", dict['Name']
Когда приведенный выше код выполняется, он дает следующий результат:
Traceback (most recent call last):
File "test.py", line 3, in <module>
dict = {['Name']: 'Zara', 'Age': 7};
TypeError: list objects are unhashable