给定 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])
我想编写一个函数,它将 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])