Ответ
Модуль collections
в Python предоставляет высокопроизводительные альтернативы и расширения для встроенных типов данных (контейнеров), таких как dict
, list
, set
и tuple
.
Основные классы и их назначение:
-
Counter
: Словарь для подсчета хешируемых объектов. Удобен для вычисления частоты элементов в последовательности.from collections import Counter c = Counter('abracadabra') print(c.most_common(1)) # [('a', 5)]
-
deque
(double-ended queue): Двусторонняя очередь, оптимизированная для быстрого добавления и удаления элементов с обоих концов (O(1)
). Гораздо эффективнее, чемlist
для операцийpop(0)
иinsert(0, v)
.from collections import deque d = deque([1, 2, 3]) d.appendleft(0) # Быстрое добавление в начало d.pop() # Быстрое удаление с конца # d -> deque([0, 1, 2])
-
defaultdict
: Подклассdict
, который вызывает фабричную функцию для предоставления значения по умолчанию для отсутствующего ключа. Это избавляет от необходимости проверять наличие ключа.from collections import defaultdict dd = defaultdict(int) # Значение по умолчанию - 0 dd['non_existent_key'] += 1 print(dd['non_existent_key']) # 1 (без KeyError)
-
namedtuple()
: Фабричная функция для создания кортежей с именованными полями. Делает код более читаемым, позволяя обращаться к элементам по имени, а не по индексу.from collections import namedtuple Point = namedtuple('Point', ['x', 'y']) p = Point(11, y=22) print(p.x + p.y) # 33 (более читаемо, чем p[0] + p[1])
-
OrderedDict
: Словарь, который помнит порядок добавления ключей. С Python 3.7+ стандартныйdict
также сохраняет порядок вставки, ноOrderedDict
остается полезным для обратной совместимости и из-за наличия методаmove_to_end()
.