了解list.sort()如何使用lambda



所以我想知道sort((方法是如何对以下列表中的项目进行排序的:

scores = [('COLIN', 58), ('AMANDBA', 172), ('AMANDAB', 172), ('CAROL', 270), ('PauL', 108), ('JOSEPH', 79)]

以下是我开始感到困惑的地方:

scores.sort(key=lambda x: (-x[1],x[0]))

因此,根据我的理解,lambda的基本作用是告诉.sort((按…排序。作为一个例子,我将从得分('COLIN', 58)中取第一个项目,以及我认为lambda对每个项目的作用:('COLIN', 58)->(-58, 'COLIN')。如果我是对的,这就是.sort((用作键的地方,那么排序方法对它进行排序需要采取哪些步骤?需要注意的是,这个以lambda为键的.sort((对项目进行排序,最终结果为:

[('CAROL', 270), ('AMANDAB', 172), ('AMANDBA', 172), ('PauL', 108), ('JOSEPH', 79), ('COLIN', 58)]

这意味着它将按字母顺序对具有相同编号的项目进行排序,如图所示:

('AMANDAB', 172), ('AMANDBA', 172)

排序列表的最终结果按顺序排列了上面的内容,尽管它们的编号相同,但它们也是按字母顺序排序的。我对lambda是如何做到这一点感到困惑。请有人解释一下它是如何做到这两个的,可以按数字排序,也可以按字母顺序对相同数字的排序?

元组按字典顺序排序,即类似于字符串-按第一个元素排序,如果第一个元素相等,则按第二个元素排序。因此,按(-x[1], x[0])排序首先按-x[1]排序(按-排序以获得相反的顺序(,但如果x[1]相同,则由x[0]决定。

最新更新