如何使用Python中的lambda进行排序

2024-04-26 08:04:26 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python中,我试着按lambda的日期排序。我无法理解我的错误信息。信息是:

<lambda>() takes exactly 1 argument (2 given)

我的电话是

a = sorted(a, lambda x: x.modified, reverse=True)

Tags: lambda信息true排序argumentgivenreversemodified
3条回答

使用

a = sorted(a, key=lambda x: x.modified, reverse=True)
#             ^^^^

在Python 2.x上,sorted函数按以下顺序接受其参数:

sorted(iterable, cmp=None, key=None, reverse=False)

因此,如果没有key=,您传入的函数将被视为cmp函数,它包含两个参数。

lst = [('candy','30','100'), ('apple','10','200'), ('baby','20','300')]
lst.sort(key=lambda x:x[1])
print(lst)

打印如下:

[('apple', '10', '200'), ('baby', '20', '300'), ('candy', '30', '100')]

Python列表有两种内置的数据排序方式:

sort() — A method that modifies the list in-place
sorted() — A built-in function that builds a new sorted list from an iterable

根据您的要求,您可以在以下两个选项中进行选择:

如果要保留原始列表,可以使用排序函数;如果不需要原始列表,可以使用排序函数。

在进行排序或排序之前,我们需要了解lambda。

lambda是一个匿名函数,匿名函数是一个没有名字的函数,这篇文章似乎很好地解释了这一点。

https://www.programiz.com/python-programming/anonymous-function

Lambda函数很适合调用内联函数,因为它们只有一个计算并返回的表达式。lambda的语法是:

lambda参数:表达式

让我们看看如何使用排序函数:

student_tuples = [('john', 'A', 15),('jane', 'B', 12),('dave', 'B', 10),]
sorted(student_tuples, key=lambda student: student[2]) 

输出: [(“dave”,“B”,10),(“jane”,“B”,12),(“john”,“A”,15)]

这里我们可以看到列表student-tuples,其中的tuples是根据key参数排序的,前提是student[2]。

相关问题 更多 >