Модуль collections
Модуль collections в Python — это стандартная библиотека, которая предоставляет специализированные контейнеры данных с дополнительной функциональностью по сравнению с базовыми типами данных (список, словарь, множество и т.д.). Он часто используется в автоматизации для удобной работы с коллекциями данных.
Основные структуры данных из collections:
namedtuple— Создаёт кортеж с именованными полями. Удобен, когда нужно иметь кортеж с доступом к элементам по имени, а не только по индексу.from collections import namedtuple Point = namedtuple('Point', ['x', 'y']) p = Point(10, 20) print(p.x) # 10deque— Двунаправленная очередь с быстрыми операциями добавления и удаления с обоих концов (очень эффективна для очередей и стэков).from collections import deque d = deque([1, 2, 3]) d.appendleft(0) d.pop()Counter— Счётчик элементов в итерируемом объекте, удобно для подсчёта повторений.from collections import Counter c = Counter(['a', 'b', 'a', 'c', 'b', 'a']) print(c) # Counter({'a': 3, 'b': 2, 'c': 1})OrderedDict(до Python 3.7 имел смысл, с 3.7 обычный dict уже сохраняет порядок вставки) — Словарь, который сохраняет порядок добавления элементов. Полезен, если важен порядок.from collections import OrderedDict od = OrderedDict() od['one'] = 1 od['two'] = 2defaultdict— Словарь с значениями по умолчанию. При обращении к несуществующему ключу автоматически создаёт значение по заданной функции.from collections import defaultdict dd = defaultdict(int) # по умолчанию 0 dd['a'] += 1 print(dd['a']) # 1
Когда полезен в автоматизации?
Counterдля подсчёта, например, количества успешных/неуспешных тестов.defaultdict— удобен при агрегации данных по ключам (например, группировка логов по типу).deque— для реализации очередей заданий, если нужна эффективная вставка/удаление.namedtuple— для структурирования данных с именованными полями (например, результаты тестов).
Пример 1. Использование Counter для подсчёта результатов тестов
Counter для подсчёта результатов тестовПредставим, что у нас есть список результатов запуска тестов, и мы хотим посчитать, сколько было успешных и неуспешных тестов.
Пример 2. Использование defaultdict для группировки логов по уровню
defaultdict для группировки логов по уровнюПример 3. Использование namedtuple для структурирования данных теста
namedtuple для структурирования данных тестаПример 4. Использование deque для очереди задач в тесте
deque для очереди задач в тестеLast updated
Was this helpful?