如何在 Python 中创建无限嵌套的 defaultdict?

DDD
发布: 2024-11-26 07:43:09
原创
195 人浏览过

How to Create an Infinitely-Nested defaultdict in Python?

如何创建无限级递归defaultdict

Python的defaultdict是一种通用的数据结构,可用于创建嵌套字典。但是,默认情况下,defaultdicts 仅提供单层嵌套。有没有办法创建一个defaultdict,它充当内部defaultdict的默认工厂,从而有效地创建无限级递归结构?

原始问题试图实现以下行为:

x = defaultdict(...stuff...)
x[0][1][0]
# Should return an empty dictionary {}
登录后复制

仅使用本机defaultdict参数,不可能创建无限嵌套的递归defaultdict。流行的解决方法是利用 lambda 函数:

x = defaultdict(lambda: defaultdict(dict))
登录后复制

此方法创建一个 defaultdict,在访问丢失的键时生成新的 defaultdict。这有效地提供了无限级别的嵌套。

基于 Lambda 的方法的优点:

  • 明确且易于理解:语法清晰定义所需的行为,使其他开发人员可以轻松地
  • 灵活的数据类型:defaultdict的“叶子”可以通过修改lambda函数自定义为列表、集合或任何其他数据结构。

注意:

无限嵌套使用 lambda 的 defaultdict 具有以下特征:

  • 访问缺失的键将始终返回指定数据类型的新实例(在本例中为 defaultdict(dict))。
  • 嵌套深度在技术上受可用内存和使用的特定数据结构(在本例中为 defaultdict(dict))的限制。

以上是如何在 Python 中创建无限嵌套的 defaultdict?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板