我有一个这样的 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 ),从原始元组创建一个元组,但反转第一个元素。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!