给定n,如何返回n嵌套的defaultdict?

时间:2019-02-20 15:39:51

标签: python nested defaultdict

我想编写一个函数,该函数将根据输入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

1 个答案:

答案 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])