v1.0.0

Python с нуля для ЕГЭ · Словари: связываем ключи и значения

Урок курсаPython 35 задачБесплатно

Словари: связываем ключи и значения

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

Теория

Словарь связывает ключ и значение

Словарь хранит пары: по уникальному ключу можно получить связанное значение. Ключ описывает, что мы ищем, а значение содержит данные — например, имя ученика и его балл.

Присваивание по существующему ключу обновляет значение. Присваивание по новому ключу добавляет новую пару.

scores = {"Ира": 4, "Олег": 5}scores["Ира"] += 1scores["Лена"] = 4print(scores["Ира"])

Как проходит обращение по ключу

Выражение со скобками требует существования ключа. Если ключ может отсутствовать, сначала используют проверку in или метод get со значением по умолчанию.

Оператор in для словаря проверяет именно ключи. Чтобы работать со всеми значениями, используют values, а для пар — items.

Разберём на примере
Посчитаем повторения
Словарь frequencies пока не содержит очередное слово.
  1. Метод get со значением 0 возвращает ноль для отсутствующего ключа.
  2. К этому числу прибавляется единица.
  3. Результат записывается по ключу; при следующей встрече чтение начнётся уже с сохранённого количества.
Проверьте себя
Чем проверка key in data отличается от проверки value in data.values()?
Первая ищет ключ среди ключей словаря, вторая — конкретное значение среди сохранённых значений.

Список словарей хранит несколько похожих записей

Один словарь удобно читать как одну запись с именованными полями. Несколько дел можно хранить в списке словарей: у каждого есть id, текст и отметка выполнения. Список сохраняет порядок, а ключи объясняют смысл каждого значения.

tasks = [    {"id": 1, "title": "Повторить циклы", "done": False},    {"id": 2, "title": "Решить задачу", "done": True},] for task in tasks:    print(task["id"], task["title"])

Метод items пригодится, когда нужны одновременно ключ и значение одного словаря. Но для прикладного кода чаще понятнее обращаться к известным полям по имени: task["title"] и task["done"].

Отсутствующий ключ — отдельный случай

Прямое обращение по неизвестному ключу вызывает KeyError. Это не означает, что словарь сломан: программа просто не описала, что делать при отсутствии данных.

Как проверять словарь

Назовите допустимые ключи, решите, может ли ключ отсутствовать, и только затем выбирайте прямое обращение или get. После обновления проверьте одну существующую и одну новую пару.

Как действовать
Работаем с парами осознанно
  1. Определите смысл ключа. Он должен однозначно находить нужную запись.
  2. Учтите отсутствие. Выберите проверку in или get, если ключ необязателен.
  3. Обновите значение. Используйте прежнее значение только после безопасного чтения.
  4. Проверьте пары. Сверьте ключи и связанные с ними результаты отдельно.

Практика

Получите значение по ключу

Если ages = {"Ира": 15, "Олег": 16}, чему равно ages["Ира"]?

Подсказка
Ключ Ира связан со значением 15.
Решение

Обращение по ключу возвращает связанное с ним значение — 15.

После score = {"Анна": 5} выполняется score["Анна"] += 2. Какое значение хранится по ключу?

Подсказка
К прежнему значению 5 прибавляется 2.
Решение

Словарь обновляет значение по существующему ключу: 5 + 2 = 7.

Проверьте наличие ключа

Что вернёт "math" in {"math": 5, "python": 4}?

Подсказка
Оператор in для словаря проверяет ключи.
Решение

Ключ `math` существует, поэтому выражение возвращает `True`.

Используйте значение по умолчанию

Чему равно scores.get("Борис", 0), если ключа Борис в словаре нет?

Подсказка
Второй аргумент get возвращается при отсутствии ключа.
Решение

Ключ не найден, поэтому метод не вызывает ошибку, а возвращает указанное значение 0.

Измените найденную запись

Запустите tasks = [{"id": 1, "done": False}, {"id": 2, "done": False}]; tasks[1]["done"] = True; print(tasks[1]["id"], tasks[1]["done"]). Какую строку выведет программа?

Подсказка
Изменяется поле второго словаря, но его id остаётся прежним.
Решение

Второй словарь сохраняет `id` 2, а его изменяемое поле `done` становится `True`.

Итог

Теперь вы можете хранить пары ключ–значение, безопасно читать и обновлять словарь.

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

Прогресс

0 / 5
x

Вы ещё не решали задания