Ответ
Модуль 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().