python – 在任意深度嵌套defaultdicts

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

from collections import defaultdict   
D = defaultdict( lambda:defaultdict(int) )

这工作得很好,如earlier所述.

现在我正在寻找以任意深度执行此操作的方式/功能:
所以我想要一个功能

def Gen_DDict( dim=3 ):
    "code I'm looking for"

这将为dim = 3返回:

defaultdict( lambda : defaultdict( lambda : defaultdict(int) ) )

最佳答案

def genDDict(dim=3):
    if dim==1:
        return collections.defaultdict(int)
    else:
        return collections.defaultdict(lambda: genDDict(dim-1))

输出:

In [257]: d = genDDict(2)

In [258]: d[2][1]
Out[258]: 0
点赞