ЕГЭ · Информатика

Множества и словари в Python: полный разбор для ЕГЭ

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

Множество (set) — это неупорядоченная коллекция уникальных элементов. Оно поддерживает операции пересечения, объединения, разности и другие. Словарь (dict) — это структура для хранения данных в формате «ключ: значение», где ключи уникальны. Оба типа активно используются для обработки данных, особенно при подсчёте частот.

Мы рассмотрим примеры уровня ЕГЭ, разберём пошаговые решения и ответим на частые вопросы. В конце вы узнаете, как можно углубить знания с помощью AI-репетитора.

🧑‍🏫
Разберём эту тему вместе

Без карты, без кредитки. Выбери персонажа — учи голосом, побеждай в баттлах.

Множества в Python: основы и операции

Множество в Python создаётся с помощью фигурных скобок или функции set(). Важно: элементы множества должны быть неизменяемыми (числа, строки, кортежи). Основные операции:
- len(s) — количество элементов
- x in s — проверка вхождения
- s1 | s2 — объединение
- s1 & s2 — пересечение
- s1 - s2 — разность
- s1 ^ s2 — симметрическая разность

Множества часто применяются для удаления дубликатов из списка или для проверки пересечения данных.

Пример 1
Условие.

Даны два списка чисел. Вывести количество общих чисел (без учёта повторений).

Решение.

Шаг 1: Преобразуем списки в множества: set1 = set(list1), set2 = set(list2).
Шаг 2: Находим пересечение: common = set1 & set2.
Шаг 3: Выводим len(common).
Пример: list1 = [1,2,2,3], list2 = [2,3,4] → set1={1,2,3}, set2={2,3,4} → common={2,3} → ответ 2.

Словари в Python: ключи и значения

Словарь (dict) — это изменяемая коллекция пар «ключ-значение». Ключи уникальны, значения могут быть любыми. Создание: d = {'a': 1, 'b': 2} или dict(a=1, b=2). Основные методы:
- d.keys(), d.values(), d.items()
- d.get(key, default) — безопасное получение значения
- d.update(other) — обновление словаря

Словари незаменимы для подсчёта частот элементов, построения таблиц соответствий и быстрого поиска по ключу.

Пример 1
Условие.

Дан список слов. Подсчитать, сколько раз встречается каждое слово. Вывести слово и его частоту.

Решение.

Шаг 1: Создаём пустой словарь freq = {}
Шаг 2: Для каждого слова w в списке: если w в freq, то freq[w] += 1, иначе freq[w] = 1.
Шаг 3: Выводим freq.items().
Пример: ['cat', 'dog', 'cat'] → freq = {'cat': 2, 'dog': 1}.

Применение множеств и словарей для подсчёта частот

Комбинация множеств и словарей позволяет решать задачи эффективно. Например, чтобы найти уникальные элементы и их количество, можно использовать set для уникальности и dict для подсчёта. Типичная задача ЕГЭ: дан текст, нужно найти количество различных слов и частоту каждого.

Алгоритм:
1. Разбить текст на слова (например, через split()).
2. Использовать set для получения уникальных слов.
3. Использовать dict для подсчёта: проходим по списку слов, увеличиваем счётчик.

Такой подход даёт O(n) время и O(n) память.

Пример 1
Условие.

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

Решение.

Шаг 1: words = text.split()
Шаг 2: freq = {}
for w in words:
freq[w] = freq.get(w, 0) + 1
Шаг 3: max_freq = max(freq.values())
Шаг 4: candidates = [w for w, c in freq.items() if c == max_freq]
Шаг 5: result = min(candidates) # первое по алфавиту
Шаг 6: print(result)
Пример: text = 'a b c a b a' → freq={'a':3,'b':2,'c':1} → max_freq=3 → candidates=['a'] → ответ 'a'.

Пример задачи ЕГЭ: множества и словари в действии

Рассмотрим задачу из реального ЕГЭ (номер 2 или 17 в зависимости от года). Условие: на вход подаётся последовательность чисел. Требуется найти количество пар, в которых сумма элементов кратна 3, а произведение больше некоторого порога. Для решения удобно использовать словарь для группировки чисел по остаткам от деления на 3, а затем множества для проверки уникальности пар.

Решение включает подсчёт количества чисел с каждым остатком, затем комбинаторику. Множества помогают избежать дублирования пар, если числа повторяются.

Часто задаваемые вопросы (FAQ)

Частые вопросы

Чем отличается множество от списка?
Множество хранит только уникальные элементы и не сохраняет порядок. Список может содержать дубликаты и упорядочен. Для поиска элемента в множестве используется O(1) в среднем, в списке — O(n).
Можно ли использовать список как ключ словаря?
Нет, ключи должны быть неизменяемыми (хешируемыми). Список — изменяемый, поэтому не подходит. Вместо списка можно использовать кортеж.
Как быстро подсчитать частоту символов в строке?
Используйте словарь: for ch in string: d[ch] = d.get(ch, 0) + 1. Или collections.Counter из стандартной библиотеки.
Какие операции над множествами чаще всего встречаются на ЕГЭ?
Пересечение (поиск общих элементов), объединение (все уникальные из двух множеств), разность (элементы одного, отсутствующие в другом). Также проверка вхождения через in.
Что такое хеш-таблица и как она связана со словарями?
Словарь в Python реализован через хеш-таблицу. Ключ преобразуется в хеш-код, который определяет индекс в массиве. Это обеспечивает быстрый доступ O(1).
Как разобрать сложную задачу на множества и словари с помощью AI?
Попробуйте Наставника AI — он объяснит тему в стиле любого персонажа, от профессора до кота Барсика. Вы получите пошаговое решение, подсказки и сможете задать вопросы. Это удобно для подготовки к ЕГЭ.
🧑‍🏫
Разберём эту тему вместе

Без карты, без кредитки. Выбери персонажа — учи голосом, побеждай в баттлах.

Множества и словари в Python: подготовка к ЕГЭ