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)))

но что с треском проваливается в четвертом поколении (что неудивительно, если продумать).

0 ответов

Другие вопросы по тегам