gpt4 book ai didi

python - 使用 lambda 表达式和 defaultdict 创建树结构

转载 作者:行者123 更新时间:2023-12-04 08:23:39 25 4
gpt4 key购买 nike

下面的代码示例使用递归定义。据我了解,每当定义一个键时,其对应的值都会被设置为字典作为默认值。这种定义方式允许任意深度。

import collections
tree = lambda: collections.defaultdict(tree)
some_dict = tree()
some_dict['color']['favor'] = "yellow"
但是,我不明白为什么不定义为以下方式:
import collections
tree = collections.defaultdict(collections.defaultdict)
似乎两种方式都可以正常工作。它们都允许定义任意深度的字典。它们在任何意义上都不同吗?

最佳答案

它们远非等价,因为第二个不会创建任意嵌套深度:

from collections import defaultdict

tree = lambda: defaultdict(tree)

some_dict_1 = tree()
some_dict_2 = defaultdict(defaultdict)
现在,查看一些更深入的访问:
>>> some_dict_1[1][2][3][4] = 5  # works fine
>>> some_dict_2[1][2][3][4] = 5
KeyError: 2
还要注意一个普通的 defaultdict因为默认工厂只值一个简单的 dict因为它会创建缺失值 defaultdict() ,即没有自己的默认工厂:
>>> some_dict_2[1][2]
KeyError: 2
即使 some_dict_2[1]defaultdict (“按名称,而不是按游戏”):
>>> some_dict_2[1]
defaultdict(None, {})

关于python - 使用 lambda 表达式和 defaultdict 创建树结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65378016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com