Как использовать collections.Counter и defaultdict?
Модуль collections в стандартной библиотеке Python содержит специализированные структуры данных, которые существенно расширяют возможности базовых типов. Умелое использование этих классов позволяет избавиться от громоздких конструкций проверки ключей и ручного подсчета элементов.
Класс Counter создан специально для эффективного подсчета частоты встречаемости объектов в последовательностях. Инициализация объекта Counter(words) мгновенно строит частотный словарь, где ключами являются уникальные элементы, а значениями — количество их повторений. Дополнительный метод most_common(n) позволяет быстро получить список из n самых частых элементов.
Другой полезный класс — defaultdict — решает проблему отсутствия ключа в словаре без необходимости использования метода setdefault или конструкции try-except. При инициализации defaultdict принимает фабрику вызываемых объектов, которая автоматически создает значение по умолчанию для любого нового ключа.
Использование defaultdict(list) идеально подходит для задач группировки данных, где каждый новый ключ автоматически получает пустой список для последующего добавления элементов. В свою очередь, вариант defaultdict(int) превращает словарь в удобный универсальный счетчик, инициализирующий новые ключи нулевым значением.