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