嵌套任意深度的默认值

Mag*_*n88 3 python

我想嵌套任意数量的默认值,如下所示:

from collections import defaultdict   
D = defaultdict( lambda:defaultdict(int) )
Run Code Online (Sandbox Code Playgroud)

这工作正常,如前所述.

现在我正在寻找以任意深度执行此操作的方式/函数:例如,我想要一个函数

def Gen_DDict( dim=3 ):
    "code I'm looking for"
Run Code Online (Sandbox Code Playgroud)

这将为dim = 3返回:

defaultdict( lambda : defaultdict( lambda : defaultdict(int) ) )
Run Code Online (Sandbox Code Playgroud)

ins*_*get 6

def genDDict(dim=3):
    if dim==1:
        return collections.defaultdict(int)
    else:
        return collections.defaultdict(lambda: genDDict(dim-1))
Run Code Online (Sandbox Code Playgroud)

输出:

In [257]: d = genDDict(2)

In [258]: d[2][1]
Out[258]: 0
Run Code Online (Sandbox Code Playgroud)