我想写一个函数,它将返回一个嵌套的defaultdict,具体取决于输入n的值。
对于n = 1,它应该返回defaultdict(int)
。
对于n = 3,它应该返回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])