Python для начинающих: Словари (Урок 15)

Словарь в 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)  # Выведет словарь с добавленным элементом

Что будем искать? Например,программа