Словари (dict) и множества (set) в Python для ЕГЭ/ОГЭ: шпаргалка и примеры | СмартКИМ
СмартКИМ УДОБНАЯ ПОДГОТОВКА К ЕГЭ И ОГЭ
Все разборы Решать в тренажере Войти в СмартКИМ
ЕГЭ (1–27) ОГЭ (1–15) Python: шпаргалка
Быстрый переход по номерам и темам
Продвинутый синтаксис Время: 5-10 мин dict set collections.Counter defaultdict

Словари (dict) и множества (set)

Тема: Удаление дубликатов, быстрый поиск O(1), подсчет частот и defaultdict
Множества обеспечивают мгновенный поиск элементов за O(1), а словари незаменимы для группировки данных по ключам и подсчёта частот.

1. Множества (set)

Множество — это неупорядоченная коллекция уникальных элементов. Поиск x in my_set выполняется мгновенно за $O(1)$ (в отличие от списка, где поиск за $O(N)$):

  • set(a) — удаление всех дубликатов из списка.
  • A & B — пересечение (элементы, которые есть и в A, и в B).
  • A | B — объединение (элементы из A или B).
  • A - B — разность (элементы из A, которых нет в B).

Разновидности и прототипы задания на экзамене

1. Множества (set) и операции над ними
Удаление дубликатов set(a), объединение |, пересечение &, разность -.
2. Словари (dict) и подсчет частот
Подсчет повторений через d.get(k, 0) + 1 или Counter.
3. Группировка данных (Задание 26/27 ЕГЭ)
Группировка точек по рядам: rows[r].append(col).

Боевой шаблон решения на Python

Запустить код в онлайн-песочнице
Боевой шаблон решения на Python
# === Шпаргалка: Множества и словари ===
from collections import defaultdict, Counter

# 1. Быстрое удаление дубликатов:
raw_list = [5, 2, 8, 2, 5, 1, 9, 8]
unique_sorted = sorted(set(raw_list))
print("Уникальные по возрастанию:", unique_sorted)

# 2. Группировка точек по рядам для Задания 26:
rows = defaultdict(list)
# Допустим, на вход подаются пары (ряд, место):
pairs = [(10, 5), (10, 8), (12, 1), (10, 6)]
for r, c in pairs:
    rows[r].append(c)

for r in rows:
    rows[r].sort()
    print(f"Ряд {r}: места {rows[r]}")

# 3. Подсчет частот элементов через Counter:
counts = Counter("АБРАКАДАБРА")
print("Частоты букв:", counts)
print("Самая частая буква:", counts.most_common(1))

Типичные ошибки

✕ Не так
# ❌ Ошибка: Создание пустого множества через {}
s = {} # Это создаст пустой СЛОВАРЬ (dict), а не set!
✓ Так
# ✅ Правильно: Создавать пустое множество через set():
s = set()
ГРОБ

ЛОВУШКА: Попытка положить изменяемый список в set или ключ dict

my_set.add([1, 2]) вызовет TypeError: unhashable type: 'list'.

Как обойти
Превращайте списки в неизменяемые кортежи: my_set.add(tuple([1, 2])).

Лайфхаки на экзамене

  1. Поиск в set работает в 100 000 раз быстрее, чем в list на больших массивах!
  2. Для безопасного извлечения из словаря используйте d.get(key, 0) вместо d[key].
Все разборы заданий Открыть в тренажере СмартКИМ