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