Python3 Словарь

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

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

d = {key1 : value1, key2 : value2, key3 : value3 }

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

Ключи должны быть уникальными, а значения — нет.

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

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

tinydict = {'name': 'example', 'likes': 123, 'url': 'www.example.com'}

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

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

Создайте пустой словарь

Используйте фигурные скобки{ }для создания пустого словаря:

Пример

# Используйте фигурные скобки {} для создания пустого словаря
emptyDict = {}
 
# Вывести словарь
print(emptyDict)
 
# Проверить количество элементов словаря
print("Length:", len(emptyDict))
 
# Проверить тип
print(type(emptyDict))

Приведённый выше пример выводит:

{}
Length: 0
<class 'dict'>

Используйте встроенную функциюdict()для создания словаря:

Пример

emptyDict = dict()
 
# Вывести словарь
print(emptyDict)
 
# Проверить количество элементов словаря
print("Length:",len(emptyDict))
 
# Проверить тип
print(type(emptyDict))

Приведённый выше пример выводит:

{}
Length: 0
<class 'dict'>

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

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

Пример

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

Приведённый выше пример выводит:

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

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

Пример

#!/usr/bin/python3 tinydict = {'Name': 'Example', 'Age': 7, 'Class': 'First'} print ("tinydict['Alice']: ", tinydict['Алиса'])

Приведённый выше пример выводит:

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


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

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

Пример

#!/usr/bin/python3 tinydict = {'Name': 'Example', 'Age': 7, 'Class': 'First'} tinydict['Age'] = 8 # Обновить Age tinydict['School'] = "Example Tutorial" # Добавить информацию print ("tinydict['Age']: ", tinydict['Age']) print ("tinydict['School']: ", tinydict['School'])
Приведённый выше пример выводит:
tinydict['Age']:  8
tinydict['School']:  Example


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

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

Явно удалить словарь с помощью команды del, как в следующем примере:

Пример

#!/usr/bin/python3 tinydict = {'Name': 'Example', 'Age': 7, 'Class': 'First'} del tinydict['Name'] # Удалить ключ 'Name' tinydict.clear() # Очистить словарь del tinydict # Удалить словарь print ("tinydict['Age']: ", tinydict['Age']) print ("tinydict['School']: ", tinydict['School'])

Но это вызовет исключение, потому что после операции del словарь больше не существует:

Traceback (most recent call last):
  File "/example-test/test.py", line 9, in <module>
    print ("tinydict['Age']: ", tinydict['Age'])
NameError: name 'tinydict' is not defined

Примечание:Метод del() также будет рассмотрен позже.


Характеристики ключей словаря

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

Нужно запомнить два важных момента:

1) Один и тот же ключ не может встречаться дважды. При создании, если одному и тому же ключу дважды присваивается значение, будет запомнено последнее значение, как в следующем примере:

Пример

#!/usr/bin/python3 tinydict = {'Name': 'Example', 'Возраст': 7, 'Имя': 'Маленький новичок'} print ("tinydict['Name']: ", tinydict['Name'])

Приведённый выше пример выводит:

tinydict['Name']:  小Example

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

Пример

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

Приведённый выше пример выводит:

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


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

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

Нет.Функция и описаниеПример
1len(dict)
Подсчитывает количество элементов словаря, то есть общее количество ключей.
>>> tinydict = {'Name': 'Example', 'Age': 7, 'Class': 'First'}
>>> len(tinydict)
3
2str(dict)
Выводит словарь в виде строкового представления, пригодного для печати.
>>> tinydict = {'Name': 'Example', 'Age': 7, 'Class': 'First'}
>>> str(tinydict)
"{'Name': 'Example', 'Class': 'First', 'Age': 7}"
3type(variable)
Возвращает тип входной переменной. Если переменная является словарём, возвращает тип словаря.
>>> tinydict = {'Name': 'Example', 'Age': 7, 'Class': 'First'}
>>> type(tinydict)
<class 'dict'>

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

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