Python·100 вопросов

Как использовать collections.Counter и defaultdict?

Ответ

Модуль collections в стандартной библиотеке Python содержит специализированные структуры данных, которые существенно расширяют возможности базовых типов. Умелое использование этих классов позволяет избавиться от громоздких конструкций проверки ключей и ручного подсчета элементов.

Класс Counter создан специально для эффективного подсчета частоты встречаемости объектов в последовательностях. Инициализация объекта Counter(words) мгновенно строит частотный словарь, где ключами являются уникальные элементы, а значениями — количество их повторений. Дополнительный метод most_common(n) позволяет быстро получить список из n самых частых элементов.

Другой полезный класс — defaultdict — решает проблему отсутствия ключа в словаре без необходимости использования метода setdefault или конструкции try-except. При инициализации defaultdict принимает фабрику вызываемых объектов, которая автоматически создает значение по умолчанию для любого нового ключа.

Использование defaultdict(list) идеально подходит для задач группировки данных, где каждый новый ключ автоматически получает пустой список для последующего добавления элементов. В свою очередь, вариант defaultdict(int) превращает словарь в удобный универсальный счетчик, инициализирующий новые ключи нулевым значением.

Импортируйте необходимые классы из модуля через команду from collections import Counter, defaultdict.
Применяйте Counter для быстрого подсчета элементов в списках, строках или других итерируемых объектах.
Используйте метод most_common(n) у объекта Counter для выявления топ-N наиболее популярных элементов.
Создавайте словари с помощью defaultdict(list) для безопасной и чистой группировки данных без предварительной проверки существования ключей.
Задействуйте defaultdict(int) для реализации счетчиков частотности без написания громоздких условных блоков if-else.
Полезен ли этот ответ?

Другие вопросы этой темы

Связанные вопросы из других тем