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 подскажет развёрнутый ответ в реальном времени.