首页 > 解决方案 > 给定 n,如何返回一个 n 嵌套的 defaultdict?

问题描述

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

标签: pythonnesteddefaultdict

解决方案


关于什么:

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

推荐阅读