Словарь в Python — неупорядоченная структура данных, хранящая пары «ключ-значение». В отличие от списков, доступ к элементам словаря осуществляется не по индексу, а по уникальному ключу. Ключом может быть любой неизменяемый тип данных: целое число, строка, кортеж и т.д. В других языках программирования словари часто называют ассоциативными массивами. Словарь — изменяемый тип данных, позволяющий добавлять, удалять и изменять элементы.
Создание словарей
Существует несколько способов создания словарей:
Фигурные скобки
Простейший способ — использование фигурных скобок {}. Пустой словарь создается так: {}. Заполненный словарь создается путем указания пар «ключ: значение», разделенных запятыми. Для лучшей читаемости рекомендуется размещать каждую пару на отдельной строке:
my_dict = {
1: "one",
2: "two"
}
Функция dict()
Функция dict() позволяет создать пустой словарь: dict(). Также можно передать ей именованные аргументы, которые будут использоваться в качестве пар «ключ-значение»:
my_dict = dict(One="один", Two="два")
Ограничение: ключи должны быть валидными именами переменных (буквы, цифры, подчеркивание, начинаться с буквы или подчеркивания).
Преобразование из других типов данных
Функция dict() может преобразовывать другие типы данных в словарь. Например, список списков, где каждый вложенный список содержит пару «ключ-значение»:
sp = [[1, 2], [3, 4]]
my_dict = dict(sp)
Аналогично работает с кортежами:
sp = (("AC", "BD"),)
my_dict = dict(sp)
Генераторы словарей (включения словарей)
Генераторы словарей позволяют создавать словари с помощью итераций:
my_dict = {i: i**2 for i in range(1, 11)}
Пример подсчета частоты символов в строке:
s = "Hello world"
my_dict = {c: s.count(c) for c in set(s)}
Функция zip()
Функция zip() объединяет элементы из нескольких итерируемых объектов в кортежи, которые затем можно использовать для создания словаря:
s1 = [1, 2, 3]
s2 = ["One", "Two", "Three"]
my_dict = dict(zip(s1, s2))
Важно: количество элементов в итерируемых объектах должно быть одинаковым.
Метод fromkeys()
Метод fromkeys() создает словарь с указанными ключами и одинаковым значением для всех ключей:
my_dict = dict.fromkeys(['a', 'b', 'c'], 1000)
Работа со словарями
Получение элементов
Для получения значения по ключу используется синтаксис словарь[ключ]:
sl = {'name': 'Вася', 'age': 17, 'city': 'Петрозаводск'}
print(sl['name']) # Выведет: Вася
Для предотвращения ошибки KeyError при попытке доступа к несуществующему ключу, рекомендуется использовать оператор in:
if 'name' in sl:
print(sl['name'])
else:
print("Такого ключа нет")
Изменение элементов
Словари изменяемы, поэтому значения можно изменять:
sl['name'] = 'Иван'
print(sl) # Выведет обновленный словарь
Добавление нового элемента осуществляется аналогично, просто указав несуществующий ключ:
sl['country'] = 'Россия'
print(sl) # Выведет словарь с добавленным элементом