Для справки, можно реализовать универсальный вложенный defaultdict
фабричный метод через:
from collections import defaultdict
from functools import partial
from itertools import repeat
def nested_defaultdict(default_factory, depth=1):
result = partial(defaultdict, default_factory)
for _ in repeat(None, depth - 1):
result = partial(defaultdict, result)
return result()
Глубина определяет количество вложенных словарей перед использованием типа, определенного в default_factory
.Например:
my_dict = nested_defaultdict(list, 3)
my_dict['a']['b']['c'].append('e')