【发布时间】:2020-05-02 17:52:28
【问题描述】:
所以我想知道 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() 用作键的内容,那么 sort 方法对其进行排序的步骤是什么?
需要注意的重要一点是,这个以 lambda 为键的 .sort() 对项目进行排序,最终结果为:
[('CAROL', 270), ('AMANDAB', 172), ('AMANDBA', 172), ('PauL', 108), ('JOSEPH', 79), ('COLIN', 58)]
这意味着它也会按字母顺序对具有相同编号的项目进行排序:
('AMANDAB', 172), ('AMANDBA', 172)
排序列表的最终结果按上述顺序排序,即使它们具有相同的数字,它们也按字母顺序排序。我对那个 lambda 是如何做到的感到迷茫。请有人解释一下它是做什么的,可以按数字排序,也可以按字母顺序排序具有相同数字的数字,可能吗?
【问题讨论】:
标签: python python-3.x