Что такое модуль collections? Назовите часто используемые классы.

collections — это модуль стандартной библиотеки, который предоставляет специализированные контейнеры как более удобные и эффективные альтернативы обычным list, dict, set, tuple. Чаще всего в реальном коде используют: namedtuple, deque, Counter, defaultdict, реже — OrderedDict, ChainMap, UserDict / UserList / UserString.

Подробный ответ

collections входит в стандартную библиотеку Python и содержит набор готовых контейнеров с дополнительным поведением:

  1. упрощают решение распространённых задач (подсчёт частот, очереди, объединённые словари, структурированные записи);

  2. часто работают эффективнее и/или делают код короче и понятнее, чем «голые» списки и словари.

В backend‑коде это один из самых полезных и востребованных модулей стандартной библиотеки.

Часто используемые классы из collections

namedtuple — кортеж с именованными полями

Фабрика для создания подклассов tuple с доступом по имени полей и по индексу.

from collections import namedtuple

User = namedtuple("User", ["id", "name"])
u = User(id=1, name="Ann")
u.id    # 1
u    # 1

Где применяют: лёгкие неизменяемые «DTO»‑объекты, результаты запросов, координаты, конфиги.

deque — двусторонняя очередь

Списокоподобная структура с быстрыми вставками и удалениями с обеих сторон (append, appendleft, pop, popleft).

from collections import deque

q = deque()
q.append(1)
q.appendleft(0)
q.pop()       # 1
q.popleft()   # 0

Где применяют: очереди задач, буферы последних N элементов (с maxlen), реализации алгоритмов (BFS, скользящее окно).

Counter — счётчик объектов

Подкласс dict, который считает количество вхождений каждого элемента.

from collections import Counter

counts = Counter("banana")
# Counter({'a': 3, 'n': 2, 'b': 1})
counts.most_common(1)  # [('a', 3)]

Где применяют: статистика, анализ логов, подсчёт частоты значений в списках/строках.

defaultdict — словарь с значением по умолчанию

Подкласс dict, который при обращении к отсутствующему ключу автоматом создаёт для него начальное значение с помощью фабрики (например, list или int).

from collections import defaultdict

groups = defaultdict(list)
groups["admin"].append("user1")
groups["admin"].append("user2")
# {'admin': ['user1', 'user2']}

Где применяют: группировка по ключам, удобное построение «словаря списков» или «словаря счётчиков» без лишних проверок if key not in dict.

OrderedDict — словарь с запоминаемым порядком

Словарь, который помнит порядок добавления элементов. Начиная с Python 3.7, обычный dict тоже сохраняет порядок, поэтому OrderedDict нужен реже (например, для специфических операций перестановки ключей).

Другие классы, которые стоит хотя бы знать по названию

ChainMap — единое «представление» нескольких словарей, ведёт себя как один словарь.

UserDict, UserList, UserString — обёртки вокруг dict/list/str для удобного наследования и переопределения поведения.

Как ответить на собеседовании

collections — модуль стандартной библиотеки с специализированными контейнерами, которые дополняют обычные list/dict/tuple. На практике чаще всего используют namedtuple для удобных неизменяемых структур с полями по имени, deque для очередей с быстрыми вставками с обоих концов, Counter для подсчёта частот и defaultdict для словарей с значениями по умолчанию. Реже — OrderedDict, ChainMap и обёртки вроде UserDict.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге