Код БарсикОсновы Python
Основы Python›C16 · Теория

Теория · C16

Словари и записи о предметах

Разберись в теме, запусти пример и переходи к самостоятельным задачам.

РАЗБИРАЕМ ПО ШАГАМ

От идеи к работающему коду

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

Сразу к запуску примера ↓
Барсик связывает названия свойств героя с соответствующими значениями.
Барсик связывает названия свойств героя с соответствующими значениями.
  1. 1Ключ свойства
  2. 2Значение
  3. 3Чтение и обновление

1. Ключ и значение

Словарь dict записывается в фигурных скобках. Пара ключ: значение связывает название свойства с данными. hero["name"] ищет ключ name, а не первую запись.

Ключи уникальны. При повторном присваивании тому же ключу старое значение заменяется. Строковые ключи чувствительны к регистру: Name и name — разные имена.

Python
hero = {"name": "Барсик", "energy": 100}print(hero["name"])print(hero["energy"])

2. Безопасное чтение через get

Обращение через квадратные скобки требует существующий ключ, иначе будет KeyError. Метод get позволяет указать результат для отсутствующего ключа.

get не добавляет ключ в словарь. Он только читает значение или возвращает запасной вариант. Для обязательного поля полезна строгая проверка, для необязательного — понятное значение по умолчанию.

Python
hero = {"name": "Барсик"}print(hero.get("weapon", "Нет оружия"))print("weapon" in hero)

3. Меняем запись и перебираем поля

Чтобы обновить поле, присвой значение по его ключу. Сокращение hero["energy"] -= 15 уменьшает уже существующее числовое значение. Новому ключу можно присвоить первое значение.

Метод items выдаёт пары ключ–значение. В цикле удобно распаковать каждую пару в два имени. Python сохраняет порядок добавления ключей, но смысл записи всё равно задают ключи, а не их позиции.

Python
hero = {"name": "Барсик", "energy": 100}hero["energy"] -= 15hero["level"] = 2for key, value in hero.items():    print(key, value)

4. Объединяем количества

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

В новом результате берём прежнее количество через get(name, 0), прибавляем очередное. Исходные словари не меняем. Ключи с разным регистром при необходимости нормализуем заранее.

Python
first = {"яблоки": 2, "хлеб": 1}second = {"яблоки": 3, "молоко": 1}result = first.copy()for name, count in second.items():    result[name] = result.get(name, 0) + countprint(result)

Где легко ошибиться

  • Путать имя ключа с переменной без кавычек.
  • Считать, что get создаёт отсутствующий ключ.
  • Заменить количество при объединении вместо сложения.
Проверь понимание: Изменит ли hero.get("level", 1) сам словарь?

Нет. Метод вернёт значение ключа или 1, но не добавит поле.

Данные героя в словаре

Запусти пример. Затем измени код или входные данные и проверь, как меняется вывод.

Пример входных данных

Ввод не нужен

Ожидаемый вывод

Барсик
Энергия: 85
main.pyPython · можно менять код

Подготавливаем редактор…

Загрузка Python…

Каждый ответ — с новой строки.

Твой вывод

Здесь появится результат запуска.

Дальше — самостоятельные задачи

  1. Собрать билет из полей
  2. Найти героя независимо от регистра
  3. Объединить количества одинаковых товаров в двух словарях