【发布时间】:2019-12-31 19:31:50
【问题描述】:
我有一个列表列表为myList = [['a',1],['b',4],['a',5], ['b',6]]。我想按字母顺序对列表进行排序,第一个元素作为键,我可以将其更改为myList.sort(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) => {
if(a[0] == b[0]){
return b[1] > a[1]
} else {
return b[0] < a[0]
}
})
如何在 python 中实现这一点?
【问题讨论】:
-
但是
[...['b', 4], ['b', 6]]没有遵循您提到的内容。应该是[...['b', 6], ['b', 4]]吧? -
答案在文档中:wiki.python.org/moin/HowTo/Sorting 提示:可能最好使用 lambda 函数来提高可读性
-
myList.sort(key=lambda x: (x[0],-x[1]))应该这样做 -
@hygull 感谢您指出错误。我希望它是
[...['b', 6], ['b', 4]]已编辑
标签: python python-3.x list sorting lambda