Python-defaultdict的嵌套defaultdict

发布于 2021-02-02 23:12:39

有没有办法使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的方法。

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

关注者
0
被浏览
95
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    对于任意数量的级别:

    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)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看