Словари

Словари — еще один встроенный тип данных для хранения объектов. Они используются для связывания одного объекта, называемого ключом, с другим, называемым значением. Такое связывание называется отображением. Результатом отображения будет пара ключ-значение. Пары ключ-значение добавляются в словарь. Затем вы можете найти в словаре ключ и получить соответствующее ему значение. Однако нельзя, наоборот, использовать значение для нахождения ключа.

Словари, как и списки, изменяемы. То есть, в них можно добавлять новые пары ключ-значение. Их полезность заключается в связях между ключами и значениями — существует множество ситуаций, в которых вам потребуется сохранять данные попарно. Например, в словаре можно сохранить информацию о телефонных номерах ваших друзей:

phones = {
    "Иван": "+7123456789",
    "Василий": "+37520123456"
}
print(phones)

При создании словаря нужно использовать фигурные скобки, отделять ключ от значения двоеточием, а пары ключ-значение разделять запятыми. В отличие от кортежей, если у вас есть только одна пара ключ-значение, запятая после нее не нужна.

Как только вы создали словарь, можете добавлять в него пары ключ-значение, используя синтаксис имя\_словаря[ключ] = значение, а также искать значение при помощи ключа, используя синтаксис имя_словаря[ключ].

phones = {
    "Иван": "+7123456789",
    "Василий": "+37520123456"
}
phones['Григорий'] = 1234567890
print(phones['Иван'])

Значением в словаре может быть любой объект. В предыдущем примере первые два значения были строками, а последнее значение, 1234567890, — целым числом.

В отличие от значения словаря, ключ словаря должен быть неизменяемым. Ключом словаря может быть строка или кортеж, но не список или словарь. Для определения того, есть ли ключ в словаре, используйте ключевое слово in, а not in — для проверки отсутствия ключа.

phones = {
    "Иван": "+7123456789",
    "Василий": "+37520123456"
}
print("Василий" in phones)  # True

Из словаря можно удалить пару ключ-значение с помощью ключевого слова del.

phones = {
    "Иван": "+7123456789",
    "Василий": "+37520123456"
}
del phones["Василий"]

Вы можете сохранять контейнеры в других контейнерах. Например, можно хранить списки внутри списка.

music = {
    "rap": ["Баста", "Кравц", "Злой Дух"], 
    "rock": ["Наутилус Помпилиус", "Кино", "Ария"],
    "djs": ["Paul Oakenfold", "Tiesto"]
}

В этом примере словарь music имеет три ключа, каждый из которых является списком: К этим спискам можно получить доступ с помощью соответствующих ключей

music = {
    "rap": ["Баста", "Кравц", "Злой Дух"], 
    "rock": ["Наутилус Помпилиус", "Кино", "Ария"],
    "djs": ["Paul Oakenfold", "Tiesto"]
}
print(music['rap'])  # ['Баста', 'Кравц', 'Злой Дух']
print(music['rock'][-1])  # Ария