有没有办法使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)