首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:理解Sorted()中使用的Lambda

Python:理解Sorted()中使用的Lambda
EN

Stack Overflow用户
提问于 2018-09-27 16:12:29
回答 1查看 65关注 0票数 1

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

代码语言:javascript
复制
# 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)])

因此,代码中让我感到困惑的是已排序()函数中使用的Lambda函数。我知道't‘是参数,'t’或't1‘是表达式,但不知道如何在排序()中得到赋值。在代码中,'t = d.items()‘似乎是自动发生的?

请帮助我理解这里的机制,并提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-27 16:19:49

首先,请注意,lambda与任何其他函数一样,是定义正则函数的一种方便方法。此代码:

代码语言:javascript
复制
sorted(d.items(), key=lambda t: t[0])

在功能上与此等价:

代码语言:javascript
复制
def get_first(t):
    return t[0]

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

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

例如,sorted可以像这样天真地定义:

代码语言:javascript
复制
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参数是在箭头行中使用的一个函数,用于比较两个值,以查看它们是否需要交换。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52541156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档