Хранение данных по ключам — ключевой инструмент алгоритмов.
⏱️ ~45 мин·Начальный·📚 3 урока
Словарь — это настоящий словарь
В бумажном словареКоллекция пар «ключ → значение»: {"a": 1}. Быстрый доступ по ключу. По-английски dict. вы находите слово (ключ) и читаете его перевод (значение). Питоновский словарь работает так же: хранит пары ключ → значение и позволяет мгновенно найти значение по ключу. В отличие от спискаИзменяемая упорядоченная коллекция элементов: [1, 2, 3]. По-английски list., где адрес — это номер ячейки, здесь адрес — любой ключ (чаще всего строкаТекстовое значение в кавычках: "привет". Неизменяема. По-английски string (str).). Создаётся фигурными скобками.
▶ dict.py
Обращение user["name"] читается как «достань значение, лежащее под ключом name». Присваивание user["age"] = 26 меняет значение, а user["job"] = ... добавляет новую пару, если такого ключа ещё не было.
⚠️Осторожно
Обращение к несуществующему ключу user["xxx"] вызовет ошибку KeyError. Безопаснее методФункция, привязанная к объекту и вызываемая через точку: text.upper()..get(): user.get("xxx") вернёт None вместо падения, а user.get("xxx", 0) — значение по умолчанию.
▶ dict-methods.py
Метод .items() выдаёт пары «ключ-значение», которые удобно сразу разложить в две переменныеИменованное хранилище для значения. Имя связывается со значением через присваивание: x = 5.subject, mark. А "физика" in scores проверяет наличие ключа (не значения).
Зачем словари в алгоритмах
Словарь ищет значение по ключу мгновенно — не нужно перебирать всё подряд. Это превращает медленные решения в быстрые. Классический приём — подсчёт частот: проходим по данным и копим счётчики в словаре.
▶ counter.py
Сердце приёма — строка freq[ch] = freq.get(ch, 0) + 1: «возьми текущий счётчик символа (или 0, если его ещё нет) и прибавь 1». Так за один проход собирается частота каждого символа.
💡Совет
Предскажите вывод. Что напечатает код ниже — словарь или ошибку? Подсказка: ключа "c" в словаре нет, но используется .get с запасным значением.
▶ predict-get.py
Напечатается 0 и 1: .get("c", 0) вернул запасной 0 (без ошибки), а d["a"] — существующее значение.
⚠️ Частые ошибки новичков
Ошибка. Обратиться к несуществующему ключу через квадратные скобки. Запустите код — увидите KeyError. Почините: используйте .get("xxx", 0) вместо d["xxx"].
▶ broken-key.py
Заданиерешение.py
Дан список слов words = ["кот", "пёс", "кот", "кот", "пёс"]. Постройте словарь counts, где ключ — слово, значение — сколько раз оно встретилось.
Заданиерешение.py
Дан словарь оценок scores = {"Аня": 5, "Боря": 3, "Вера": 4}. Найдите сумму всех оценок и сохраните в total.
❓Проверь себя
Чем словарь отличается от списка?
Что вернёт {"a": 1}.get("b", 0)?
Что проверяет выражение "x" in d, где d — словарь?
ℹ️Важно
✅ Что вы узнали
Словарь хранит пары ключ → значение в фигурных скобках.
Доступ по ключу: d[key]; безопасно — d.get(key, по_умолчанию).
Комментарии
Загрузка…
Загрузка комментариев…