Python-defaultdict的嵌套defaultdict

有没有办法使defaultdict也成为defaultdict的默认值?(即无限级递归defaultdict?)

我希望能够做到:

x = defaultdict(...stuff...)

x[0][1][0]

{}

因此,我可以做到x = defaultdict(defaultdict),但这仅是第二层:

x[0]

{}

x[0][0]

KeyError: 0

有一些食谱可以做到这一点。但是可以仅使用常规的defaultdict参数来完成吗?

请注意,这是在问如何执行无限级递归defaultdict,因此它与Python不同:defaultdict的defaultdict?,这是执行两级defaultdict的方法。

我可能最终会使用束模式,但是当我意识到自己不知道该怎么做时,这引起了我的兴趣。

回答:

对于任意数量的级别:

def rec_dd():

return defaultdict(rec_dd)

>>> x = rec_dd()

>>> x['a']['b']['c']['d']

defaultdict(<function rec_dd at 0x7f0dcef81500>, {})

>>> print json.dumps(x)

{"a": {"b": {"c": {"d": {}}}}}

当然,你也可以使用lambda来执行此操作,但是我发现lambda的可读性较差。无论如何,它看起来像这样:

rec_dd = lambda: defaultdict(rec_dd)

以上是 Python-defaultdict的嵌套defaultdict 的全部内容, 来源链接: utcz.com/qa/425578.html

回到顶部