我想编写一个函数,该函数将根据输入n的值返回嵌套的defaultdict。
对于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
答案 0 :(得分:5)
那又怎么样:
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])