Определение
Словарь (ассоциативный массив) — структура данных, позволяющая хранить пары вида «ключ — значение». Ключ — уникальный идентификатор, а значение может быть любой объектной переменной, включая другие структуры данных. Например, списки или другие словари.
Чтобы задать словарь, можно перечислить его элементы внутри фигурных скобок. Например, создадим словарь, используя в качестве ключей словаря названия стран, а в качестве значений по ключам — названия столиц этих стран:
countries = {"Беларусь": "Минск", "Россия": "Москва", "Франция": "Париж"}
Как видно из программы, для создания словаря можно перечислить в фигурных скобках пары: ключ и значение. Ключ и значение отделяются двоеточием и пробелами, а пары перечисляются через запятую.
В качестве ключей можно использовать значения неизменяемого типа: числа, строки, кортежи. Значения по ключу могут быть любого типа данных.
Для создания пустого словаря следует использовать функцию dict() без аргументов, либо просто указав пустые фигурные скобки. А для определения количества ключей в словаре используется функция len():
empty_dict = {}
n = len(empty_dict)
print(f"Длина пустого словаря равна {n}.")
Вывод программы:
Длина пустого словаря равна 0.
Чтобы взять значение по ключу, необходимо указать ключ в квадратных скобках после имени словаря:
d = {"a": 5, "b": 0, "c": 2}
x = d["c"]
print(f"{x}")
Вывод программы:
2
Если же нужно добавить новый ключ в словарь, то его указывают после имени словаря в левой части операции присваивания, а значение, которое будет храниться по этому ключу, — в правой части:
d = {"a": 5, "b": 0, "c": 2}
d["z"] = 1
print(f"{d}")
Вывод программы:
{'a': 5, 'b': 0, 'c': 2, 'z': 1}
При записи значения по уже существующему ключу он создаётся заново с новым значением, а прошлый стирается:
d = {2: 28}
d[2] = 29
print(f"{d[2]}")
Вывод программы:
29
При попытке взять значение по несуществующему ключу происходит исключение KeyError:
d = {2: 28}
print(f"{d[1]}")
Вывод программы:
KeyError: 1
Для проверки существования ключа в словаре следует использовать оператор in:
countries = {"Беларусь": "Минск", "Россия": "Москва", "Франция": "Париж"}
if "Сербия" in countries:
print(f"{countries['Сербия']}")
else:
print(f"Страна пока не добавлена в словарь")
Для создания нового словаря с объединенными ключами и значениями словарей d1 и d2 следует использовать оператор |:
d1 = {"a": 5, "b": 0, "c": 1}
d2 = {"a": 3, "d": 4}
d = d1 | d2
print(f"{d}")
Вывод программы:
{'a': 3, 'b': 0, 'c': 1, 'd': 4}
Значения словаря d2 имеют приоритет выше, чем значения словаря d1.
Методы словарей
| Метод | Описание | Пример |
|---|---|---|
dict.get(key[, default]) |
Возвращает значение по ключу key из словаря dict. Если ключа нет, то возвращает значение default. Если значение default не указано, то возвращает None |
>>> a = {'a': 1, 'b': 0, 'c': 2}>>> b = a.get('c')>>> b2 |
dict.setdefault(key[, default]) |
Возвращает значение по ключу key из словаря dict. Если ключа нет, то добавляет в словарь ключ со значением default и возвращает его. Если значение default не указано, то default – None |
>>> a = {'a': 1, 'b': 0, 'c': 2}>>> b = a.setdefault('d', 1)>>> a{'a': 1, 'b': 0, 'c': 2, 'd': 1}>>> b1 |
dict.update([other]) |
Обновляет словарь парами ключ/значение из other, перезаписав существующие ключи |
>>> a = {'a': 1, 'b': 0, 'c': 2}>>> a.update({'b': 4, 'd': 3})>>> a{'a': 1, 'b': 4, 'c': 2, 'd': 3} |
dict.pop(key[, default]) |
Удаляет ключ key из словаря dict и возвращает его значение. Если ключа нет, то возвращает значение default. Если значение default не указано, то вызывает KeyError |
>>> a = {'a': 1, 'b': 0, 'c': 2}>>> b = a.pop('d', 4)>>> b4 |
dict.popitem() |
Удаляет последнюю пару (ключ, значение) в словаре dict и возвращает кортеж (ключ, значение). Если словарь пустой, то вызывает KeyError |
>>> a = {'a': 1, 'b': 0, 'c': 2}>>> b = a.popitem()>>> a{'a': 1, 'b': 0}>>> b('c', 2) |
dict.clear() |
Удаляет все ключи и значения в словаре dict |
>>> a = {'a': 1, 'b': 0, 'c': 2}>>> a.clear()>>> a{} |
dict.copy() |
Копирует словарь dict |
>>> a = {'a': 1, 'b': 0, 'c': 2}>>> b = a.copy()>>> b{'a': 1, 'b': 0, 'c': 2} |
dict.keys() |
Возвращает итерируемый объект, состоящий из ключей словаря dict |
>>> a = {'a': 1, 'b': 0, 'c': 2}>>> b = a.keys()>>> bdict_keys(['a', 'b', 'c']) |
dict.values() |
Возвращает итерируемый объект, состоящий из значений словаря dict |
>>> a = {'a': 1, 'b': 0, 'c': 2}>>> b = a.values()>>> bdict_values([5, 0, 2]) |
dict.items() |
Возвращает итерируемый объект, состоящий из кортежей (ключ, значение) словаря dict |
>>> a = {'a': 1, 'b': 0}>>> b = a.items()>>> bdict_items([('a', 5), ('b', 0)]) |
Обход словаря
Перебор ключей
d = {"a": 5, "b": 0, "c": 2}
for key in d:
print(f"{key}")
Вывод программы:
a
b
c
d = {"a": 5, "b": 0, "c": 2}
for key in d.keys():
print(f"{key}")
Вывод программы:
a
b
c
Перебор значений
d = {"a": 5, "b": 0, "c": 2}
for value in d.values():
print(f"{value}")
Вывод программы:
5
0
2
Перебор пар ключ/значение
d = {"a": 5, "b": 0, "c": 2}
for key, value in d.items():
print(f"{key} {value}")
Вывод программы:
a 5
b 0
c 2