К другим статьям

Словари в Python для ЕГЭ: как структура «ключ-значение» спасает баллы

27

Поделиться
Фон

Делимся разбором самых сложных заданий в Телеграм канале

Перейти в ТГ

Как перестать перебирать списки вручную и начать решать задачи

изображение

** изображение создано или обработано с помощью ИИ.

Я работаю с задачами ЕГЭ по информатике несколько лет. Помню свой первый словарь в Python — тогда мне показалось, что я почти стал хакером. Спойлер: нет. Но решать задачи действительно стало проще.

Что такое? Это обычная пара. Есть вопрос (ключ) — есть ответ (значение). Есть фамилия ученика — есть его балл. Есть число — есть частота его появления. В Python такую структуру чаще всего реализует словарь (dict). В других языках она может называться map, hash map, associative array.

Для ЕГЭ важно не запомнить термин, а изменить подход к данным. Вы храните информацию так, чтобы быстро её находить. Не перебираете весь список каждый раз. Не заставляете компьютер и себя делать лишнюю работу. На экзамене нервы и так на пределе.

Образ для понимания. Шкаф с подписанными ящиками. Наклейка на ящике — это ключ. Содержимое ящика — значение. Вы не открываете все ящики подряд, сразу идёте к нужной наклейке. Никакой магии, только порядок.

Где эта идея прячется в заданиях ЕГЭ

изображение

** изображение создано или обработано с помощью ИИ.

В заданиях ЕГЭ редко встречается прямая формулировка «используйте словарь». Экзамен даёт массив, файл, строки или пары чисел — и проверяет, заметите ли вы подходящую структуру данных.

Когда помогает:

  1. Подсчёт частоты. Сколько раз встречается число, символ или остаток от деления. Ключ — сам элемент, значение — счётчик.
  2. Группировка. Нужно собрать данные по классам, датам, кодам или другим категориям. Ключ — категория, значение — сумма, максимум, минимум или список элементов.
  1. Быстрая проверка наличия. Нужно запомнить, какие объекты уже встречались. Достаточно хранить их как ключи словаря. Проверка if x in dict выполняется быстро, в отличие от поиска в списке.

Почему не всегда подходит список? Если ключи — строки, большие числа или редкие значения, поиск в списке может работать долго. Словарь в таких случаях эффективнее и код получается короче.

Можно ли решить списком? Можно. Но не всегда удобно. Словарь даёт прямой доступ к значению по ключу без перебора. Голова на экзамене нужна для других задач, а не для лишнего поиска.

Как думать про ключи и значения

изображение

** изображение создано или обработано с помощью ИИ.

Начинайте не с кода. Сначала спросите себя: «Что я ищу быстро?» Ответ на этот вопрос почти всегда становится ключом. Затем спросите: «Что мне нужно помнить об этом?» Это уже значение.

Примеры. Нужно посчитать частоту чисел → ключ: само число, значение: количество появлений. Нужно найти максимальную сумму по группам → ключ: номер группы, значение: текущая лучшая сумма. Всё просто, пока вы не начинаете усложнять.

Частая ошибка. Ученик делает ключом то, что постоянно меняется. Код превращается в запутанную конструкцию. Ключ должен устойчиво обозначать объект или признак. Не используйте в качестве ключа данные, которые обновляются каждый шаг.

Каким может быть значение. На ЕГЭ чаще всего хватает числа: счётчик, сумма, максимум, минимум. Это рабочая четвёрка. Четыре вопроса, которые держат структуру под контролем:

  1. Ключ: «Где искать?»
  1. Значение: «Что хранить?»
  1. Проверка ключа: «Встречалось ли это уже?»
  1. Обновление значения: «Что изменилось сейчас?»

Если держать эти четыре мысли, код становится короче. А короткий код легче проверить на экзамене. Это почти суперсила.

Мини-шаблоны на Python, которые реально спасают

изображение

** изображение создано или обработано с помощью ИИ.

В Python словарь (dict) пишется почти так же естественно, будто мысль. Создали пустой словарь, прошли по данным, обновили значение. Главное — не перепутать синтаксис в стрессовой ситуации.

Подсчёт частот — стандартная схема. Встретили число x. Если x ещё нет в словаре — создаём запись (например, со значением 0). Затем увеличиваем счётчик. Можно писать через проверку if x in dict — это понятно и надёжно. Через несколько строк кода у вас готовая таблица частот. Без лишних движений.

Метод get — возвращает значение по ключу. Если ключа нет, можно указать значение по умолчанию (для частот обычно 0). Обновление становится компактнее, но не гонитесь за красотой сразу. Сначала пишите понятно, потом сокращайте.

Я сам раньше любил «умные» однострочники. А через день смотрел на них и думал: «Кто это написал и почему он против меня?»

Максимум по группе.

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

Перед экзаменом полезно набить руку на реальных задачах. Если нужна система, а не хаос — посмотрите курс подготовки к ЕГЭ по информатике в онлайн-формате. Курс даёт структуру, расписание и обратную связь. Вы перестаёте гадать, как применять словари, а начинаете уверенно решать задачи.

Типичные ошибки, из-за которых словарь мстит

изображение

** изображение создано или обработано с помощью ИИ.

Первая ошибка — забыть создать ключ. Программа пытается увеличить счётчик, которого нет. Python честно выдаёт ошибку KeyError. На тренировке это поправимо, на экзамене — неприятно.

Вторая ошибка — перепутать ключ и значение. Например, хранить балл как ключ, когда искать нужно по фамилии ученика. Данные вроде бы есть, но задача не решается. Это как карта города, положенная вверх ногами.

Третья ошибка — изменять словарь во время его обхода. Если удалять ключи прямо в цикле for key in dict, возникнет ошибка. Лучше собрать список отдельно (например, list(dict.keys())), а потом спокойно по нему пройти.

Четвёртая ошибка — использовать словарь там, где достаточно множества (set). Если нужно только знать, встречался ли объект, а дополнительная информация не требуется, set работает быстрее и проще. Не ставьте диван там, где нужен табурет.

Пятая ошибка — не проверять крайние случаи. Пустые входные данные, один элемент, одинаковые значения, отрицательные числа. Эти маленькие зверьки любят выскакивать в самый неподходящий момент.

Короткий чек-лист перед сдачей:

  1. Проверьте, что ключ создаётся до того, как вы пытаетесь его обновить.
  1. Называйте переменные по смыслу (не всегда одной буквой).
  1. Протестируйте код на маленьком примере руками.
  1. Сравните ответ программы с ручным расчётом.

Я говорю ученикам: словарь не злой. Он просто буквальный. Что вы попросили — то и сделал. Даже если попросили ерунду.

Как тренироваться, чтобы навык прилип

изображение

** изображение создано или обработано с помощью ИИ.

Не начинайте с больших файлов. Возьмите пять чисел. Составьте таблицу частот вручную, на бумаге. Затем напишите код. Сравните результаты. Так мозг связывает идею и программу напрямую.

Следующий шаг — придумать ключ самостоятельно. Например, считать остатки от деления чисел на 3. Ключ — остаток (0, 1 или 2). Значение — количество таких чисел. Это полезно для задач, где важны делимость и пары.

Потом попробуйте хранить не счётчик, а максимум. Даны пары: группа и балл. Нужно найти лучший балл в каждой группе. Ключ — номер группы, значение — текущий максимум. Это уже похоже на реальную обработку данных.

Дальше — аккуратно усложняйте. Храните сумму и количество. Тогда можно вычислить среднее. Значением станет пара чисел (сумма, количество). Выглядит серьёзно, но внутри всё та же полка с наклейкой.

План на вечер (без героизма, но с пользой):

  1. Подсчитайте частоты чисел в коротком списке (например, [2, 5, 2, 3, 2, 5]).
  1. Найдите самый частый элемент.
  1. Сгруппируйте пары по первому числу (например, [(1,10), (2,20), (1,15)] → для ключа 1 значения 10 и 15).
  1. Найдите максимум для каждого ключа.
  1. Проверьте три крайних случая: пустой список, один элемент, все одинаковые значения.
  1. Последний вопрос вам. Когда видите задачу с повторяющимися элементами, что будет ключом? А что станет значением?

Если ответ пришёл быстро — вы уже близки. Осталось закрепить практикой.

Фон

Хочешь начать готовиться, но остались вопросы?

Заполни форму, и мы подробно объясним, как устроена подготовка к ЕГЭ и ОГЭ в ЕГЭLAND

Саша Филатов

    Дополнительная скидка 500 линия не вечна!

    Успей воспользоваться промокодом ЛЕТО с 6 по 15 июля и начни свой путь к 80+ и отлично на экзамене!

    Скидка на 8 марта