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

ages = {“Dave”: 24, “Mary”: 42, “John”: 58}
print(ages[“Dave”])
print(ages[“Mary”])

Попытка сослаться на ключ, которого нет в словаре, возвращает ошибку KeyError.

Только объекты immutable могут быть использованы в качестве ключей словарей. Объекты immutable не могут быть изменены. До сих пор единственными изменяемыми объектами в этом курсе, были списки и словари. Попытка использовать изменяемый объект в качестве ключа словаря вызывает TypeError.

bad_dict = {
[1, 2, 3]: “one two three”,
}

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

squares = {1: 1, 2: 4, 3: “error”, 4: 16,}
squares[8] = 64
squares[3] = 9
print(squares)

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

nums = {
1: “one”,
2: “two”,
3: “three”,
}
print(1 in nums)
print(“three” in nums)
print(4 not in nums)

Еще один полезный метод для работы со словарями – метод get. Он выполняет ту же функцию, что и индексация, но если ключ не найден в словаре он возвращает другое указанное значение (по умолчанию «None»).

pairs = {1: “apple”,
“orange”: [2, 3, 4],
True: False,
None: “True”,
}

print(pairs.get(“orange”))
print(pairs.get(7))
print(pairs.get(12345, “not in dictionary”))