gpt4 book ai didi

Python:了解 Sorted() 中使用的 Lambda

转载 作者:行者123 更新时间:2023-12-01 08:59:50 27 4
gpt4 key购买 nike

我试图使用orderedDict模块对我的字典进行排序,但在查看如下示例代码时提出了这个问题:

# regular unsorted dictionary
d = {'banana': 3, 'apple': 4, 'pear': 1, 'orange': 2}

# dictionary sorted by key
OrderedDict(sorted(d.items(), key=lambda t: t[0]))
OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])

# dictionary sorted by value
OrderedDict(sorted(d.items(), key=lambda t: t[1]))
OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)])

代码中让我困惑的是sorted()函数内部使用的Lambda函数。我知道“t”是参数,“t[0]”或“t[1]”是表达式,但无法弄清楚“t”如何在排序()内获得赋值。在代码中,“t = d.items()”似乎是自动发生的?

请帮助我理解这里的机制,非常感谢!

最佳答案

首先,请注意,与其他函数一样,lambda 是定义常规函数的便捷方法。这段代码:

sorted(d.items(), key=lambda t: t[0])

在功能上等同于这个:

def get_first(t):
return t[0]

sorted(d.items(), key=get_first)

您正在将函数传递给sorted(而不是调用它的结果)。 sorted 接受该函数并在需要时向其传递一个值。

例如,sorted 可以简单地定义为:

def sorted(original_values, KEY):
values = list(original_values) # create a copy
n = len(values)
for j in range(n):
for k in range(n - 1):
if KEY(values[k]) > KEY(values[k + 1]): # <----------
values[k], values[k + 1] = values[k + 1], values[k]
return values

KEY 参数是一个函数,在带有箭头的行中使用,用于比较两个值以确定它们是否需要交换。

关于Python:了解 Sorted() 中使用的 Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52541156/

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