Easycollections

Что такое collections.defaultdict?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

defaultdict — dict с фабрикой для default значения. При обращении к несуществующему ключу вызывает default_factory и сохраняет результат.

from collections import defaultdict

# multimap / grouping
d = defaultdict(list)
d['a'].append(1)
d['a'].append(2)   # {'a': [1, 2]}

# счётчик
counts = defaultdict(int)
for word in words:
    counts[word] += 1
  • Без defaultdict: d.setdefault('a', []).append(1) — многословнее;
  • d['missing']создаёт запись (побочный эффект); для проверки без создания — 'key' in d или d.get('key');
  • Counter(['a', 'b', 'a']){'a': 2, 'b': 1}; методы most_common(n), elements();
  • OrderedDict (с Python 3.7 dict упорядочен) — нужен только для move_to_end, popitem(last).

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.