Вопрос проверяет знание стандартной библиотеки и удобных инструментов для работы со словарями.
defaultdict автоматически создает значение по умолчанию при обращении к отсутствующему ключу. В обычном словаре обращение к несуществующему ключу вызывает KeyError. В defaultdict используется функция-фабрика, которая создает значение. Это удобно при подсчете или группировке данных.
Определение:defaultdict — это словарь, который автоматически создает значение для отсутствующего ключа, используя функцию-фабрику.
from collections import defaultdict
counter = defaultdict(int)
counter["a"] += 1
print(counter)
Здесь int() возвращает 0, поэтому ключ создается автоматически.
Фабрика — это функция, которая вызывается при отсутствии ключа.
Примеры:
int → 0
list → []
set → set()
Обычный dict:
d = {}
d["a"] += 1 # ошибка
Нужно писать:
d["a"] = d.get("a", 0) + 1
Подсчет частоты
Группировка элементов
Индексация
Пример группировки:
groups = defaultdict(list)
groups["admin"].append("user1")
defaultdict уменьшает количество служебного кода и делает работу со словарями безопаснее и компактнее.