首页 >后端开发 >Python教程 >defaultdict 可以递归地作为其自身的默认值进行无限嵌套吗?

defaultdict 可以递归地作为其自身的默认值进行无限嵌套吗?

Susan Sarandon
Susan Sarandon原创
2024-11-28 02:35:12479浏览

Can a defaultdict Recursively Serve as its Own Default Value for Infinite Nesting?

创建 defaultdict 的无限嵌套 defaultdict

问题:

是否可以创建一个也用作 defaultdict 的 defaultdict本身的默认值,导致无限级递归defaultdict?目标是允许访问深层嵌套元素而不会遇到 KeyError 异常。

答案:

虽然其他答案解决了“无限多个”嵌套默认字典的创建问题,他们忽略了对两层深度默认字典的具体需求。为此,可以使用以下代码:

defaultdict(lambda: defaultdict(dict))

此构造提供以下优点:

  • 显式:更加简单易懂比递归方法。
  • 可定制的叶子:它允许将 defaultdict 的“leaf”值自定义为字典以外的其他内容,例如列表或集合。

示例:

x = defaultdict(lambda: defaultdict(dict))
x[0][1][0]
{}  # returns an empty dictionary

以上是defaultdict 可以递归地作为其自身的默认值进行无限嵌套吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn