我有一个这样的清单:
[(51, 'Elijah'), (144, 'Chloe'), (485, 'Elizabeth'), (485, 'Matthew'), (207, 'Natalie'), (390, 'Jayden')]
我想以相反的顺序对它进行排序,使用元组的第一个元素作为键。如果是相同的,我需要按字母顺序按第二个元素对其进行排序。我尝试使用sorted(lista,key = function),但我得到了各种错误。提前谢谢。
答案 0 :(得分:1)
由于reversed
选项是“全局”,而不是元组的每个元素,但是您的第一个元素是数字,您可以通过简单地否定它来反转数字排序方向:
>>> sorted(lista, key=lambda x: (-x[0], x[1]))
[(485, 'Elizabeth'), (485, 'Matthew'), (390, 'Jayden'), (207, 'Natalie'), (144, 'Chloe'), (51, 'Elijah')]
当元组列表被排序时,首先比较第一个元素,如果它与第二个元素相等,依此类推。因此,作为一个关键函数,您可以简单地创建一个(使用lambda
),从原始元组创建一个元组,但反转第一个元素。