Python3中的排序键

Python3中的排序键,python,python-3.x,list,sorting,lambda,Python,Python 3.x,List,Sorting,Lambda,我有一个列表列表作为myList=[[a',1],[b',4],[a',5],[b',6]。我想用第一个元素作为键按字母顺序对列表进行排序,我可以像myList那样进行排序。排序(key=lambda x:x[0])将myList更改为[[a',1],[a',5],[b',4],[b',6]。但是如果内部列表的第一个元素是相同的,我想按照内部列表的第二个元素的降序对其进行排序,得到的结果是[['a',5],'a',1],'b',6],'b',4]。更干净的方法是什么?我本可以用Javascrip

我有一个列表列表作为
myList=[[a',1],[b',4],[a',5],[b',6]
。我想用第一个元素作为键按字母顺序对列表进行排序,我可以像
myList那样进行排序。排序(key=lambda x:x[0])
将myList更改为
[[a',1],[a',5],[b',4],[b',6]
。但是如果内部列表的第一个元素是相同的,我想按照内部列表的第二个元素的降序对其进行排序,得到的结果是
[['a',5],'a',1],'b',6],'b',4]
。更干净的方法是什么?我本可以用Javascript来完成这项工作

myList.sort((a,b)=>{
如果(a[0]==b[0]){
返回b[1]>a[1]
}否则{
返回b[0]
如何在python中实现这一点?

使用元组作为键:

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

# myList = [['a', 5], ['a', 1], ['b', 6], ['b', 4]]

但是,
[…['b',4],'b',6]]
没有遵循您提到的内容。它应该是
[…[…['b',6],'b',4]]
,对吗?答案在文档中:提示:可能最好使用lambda函数以提高可读性
myList.sort(key=lambda x:(x[0],-x[1])
应该这样做it@hygull谢谢你指出错误。我希望它是
[…['b',6],'b',4]
编辑的键是一个lambda函数,它返回排序的元组。首先比较最左边的元素;如果他们相等,第二个,依此类推<代码>-
对数字的特定“列”进行降序排序,而不是升序排序。