gpt4 book ai didi

python - 使用 lambda 和 defaultdict

转载 作者:太空宇宙 更新时间:2023-11-03 13:59:09 28 4
gpt4 key购买 nike

我在阅读有关集合 defaultdict 的内容时遇到了以下代码行:

import collections
tree = lambda: collections.defaultdict(tree)
some_dict = tree()
some_dict['colours']['favourite'] = "yellow"

我知道 lamba 接受一个变量并对其执行一些功能。我见过 lambda 被这样使用: λ x: x + 3上面第二行代码,lambda取的是什么变量,执行什么功能?

我也明白defaultdict可以带参数,比如int或者list。在第二行中,defaultdict 采用参数 tree,它是一个变量。这有什么意义?

最佳答案

代码大致等同于(忽略 def 语句引入的元数据)

import collections
def tree():
return collections.defaultdict(tree)
some_dict = tree()
some_dict['colours']['favourite'] = "yellow"

lambda 表达式简单地定义了一个零参数函数,并且该函数绑定(bind)到名称tree

通常,只有在您真正需要匿名函数时才使用 lambda 表达式,例如将其作为参数传递给另一个函数,如

sorted_list = sorted(some_list_of_tuples, key=lambda x: x[0])

当您确实需要命名函数时,使用 def 语句被认为是更好的做法。


defaultdict 接受一个可调用对象来为新键生成默认值。 int() 返回 0,list() 返回一个空列表,tree() 返回一个新的 defaultdict ;它们都可以用作 defaultdict 的参数。定义 tree 返回一个 defaultdict 的递归性质,使用它自己作为默认值生成器意味着你可以生成任意深度的嵌套字典;每个“叶”字典本身就是另一个 defaultdict

关于python - 使用 lambda 和 defaultdict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51286423/

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