给定 n,如何 return 一个 n 嵌套的 defaultdict?

Given n, how to return an n-nested defaultdict?

我想编写一个函数,它将 return 一个嵌套的 defaultdict,具体取决于输入 n 的值。

对于n=1,应该return defaultdict(int).

对于n=3,应该return defaultdict(lambda: defaultdict(lambda: defaultdict(int))).

我最好的尝试是:

def get_nested_defaultdict(n: int):
    bottom_dict = defaultdict(int)
    nested_dict = defaultdict
    for i in range(n):
        nested_dict = nested_dict(lambda: bottom_dict)
    return nested_dict

但是第二次迭代失败了:

TypeError: 'collections.defaultdict' object is not callable

怎么样:

from collections import defaultdict


def defaultdict_gen(n: int):
  if n < 1:
    raise ValueError()
  if n == 1:
    return defaultdict(int)
  return defaultdict(lambda: defaultdict_gen(n - 1))


if __name__ == '__main__':
  d = defaultdict_gen(2)
  print(d)
  print(d[0][0])