Коллекции

Словарь: создание и базовые операции

Содержание курса

Безопасное чтение через dict.get() и изменение пар

В предыдущей секции мы оставили подсказку: проверка через in перед d[key] работает, но многословна. Метод get() делает то же самое в одну строку.

dict.get(key, default)

Метод принимает ключ и необязательный аргумент default. Если ключ есть — возвращает значение. Если ключа нет — возвращает default, а не выбрасывает исключение.

person = {'name': 'Анна', 'age': 25, 'city': 'Москва'}

print(person.get('name'))           # Анна
print(person.get('phone'))          # None
print(person.get('phone', 'нет'))   # нет

Когда default не указан, он равен None — Python не падает, просто возвращает «ничего». Когда указан, как 'нет' в третьем вызове, именно это значение вы получите вместо отсутствующего ключа.

get() удобен там, где отсутствие ключа — нормальная ситуация, а не ошибка. Например, пользователь мог не заполнить поле 'phone', и программа должна продолжить работу, а не упасть.

Добавление и изменение пар: d[key] = value

Для записи в словарь используется одно и то же присваивание — независимо от того, новый ключ или уже существующий:

person = {'name': 'Анна', 'age': 25}

# Изменяем существующий ключ
person['age'] = 26

# Добавляем новый ключ
person['city'] = 'Москва'

print(person)  # {'name': 'Анна', 'age': 26, 'city': 'Москва'}

Python сам определяет, что делать: если ключ 'age' уже есть — перезапишет значение 25 на 26. Если ключа 'city' не было — создаст новую пару. Синтаксис одинаковый, поведение зависит от наличия ключа.

Это отличает словарь от списка: в список нельзя добавить элемент присваиванием lst[5] = 'x', если индекс 5 ещё не существует — будет IndexError. Словарь же спокойно создаёт новый ключ на лету.

Один нюанс: если нужно обновить числовое значение относительно текущего, пишут так:

person['age'] += 1  # читаем, прибавляем, записываем обратно
print(person['age'])  # 27

Здесь person['age'] += 1 раскрывается в person['age'] = person['age'] + 1. Ключ 'age' должен существовать, иначе правая часть выдаст KeyError — именно тот случай, когда стоит заранее убедиться в наличии ключа или задать значение по умолчанию.

Начать заново?

Помощник начнёт новый диалог по этой задаче. Текущая переписка останется в истории до конца срока хранения.

О переписке

Можно приложить до трёх фото PNG, JPEG или WebP по 5 МБ.

Переписка и фото хранятся 90 дней после последнего принятого сообщения. Преподаватель получит доступ к диалогу, когда вы попросите его помочь.

Проверка решения остаётся отдельным действием.