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

问题描述 投票:0回答:1

我想写一个函数,它将返回一个嵌套的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

python nested defaultdict
1个回答
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])
© www.soinside.com 2019 - 2024. All rights reserved.