Python: Defaultdict с Defaultdict в качестве рекурсивного ключа по умолчанию
Я ищу способ определить collection.defaultdict (фабрика), который возвращает для каждого ключа с произвольной глубиной снова defaultdict.
Например,
foo = collections.defaultdict(lambda: *magic with defaultdict* )
чтобы
>>>> foo['bar']
defaultdict(<function lambda --> defaultdict,...)
>>> foo['bar']['baz']
defaultdict(<function lambda --> defaultdict,...)
до бесконечности.
Я попробовал что-то более барочное с глубокой копией лямбда-дефолта как лямбда-фактического дефолта
>>> fooDict = collections.defaultdict(lambda: collections.defaultdict(lambda: collections.defaultdict()))
>>> barDict = collections.defaultdict(lambda: collections.defaultdict(lambda: copy.deepcopy(fooDict)))
но что с треском проваливается в четвертом поколении (что неудивительно, если продумать).