如果我有一个列表,其中包含一个看起来像这样的列表......
['a',1] ['a',2] ['a',3] ['b',1] ['b',2] ['b',3]
Run Code Online (Sandbox Code Playgroud)
我如何对它们进行排序,以便元素0按降序排序,元素1按升序排序,因此结果看起来像......
['b',1] ['b',2] ['b',3] ['a',1] ['a',2] ['a',3]
Run Code Online (Sandbox Code Playgroud)
使用itemgetter我可以在元素0上反向传递,但是我然后使用元素,当然它会破坏前一种类型.我不能做一个组合键,因为它需要先降序然后升序.
TIA,PK
Ste*_*ski 47
L = [['a',1], ['a',2], ['a',3], ['b',1], ['b',2], ['b',3]]
L.sort(key=lambda k: (k[0], -k[1]), reverse=True)
Run Code Online (Sandbox Code Playgroud)
L 现在包含:
[['b', 1], ['b', 2], ['b', 3], ['a', 1], ['a', 2], ['a', 3]]
Run Code Online (Sandbox Code Playgroud)
mhy*_*itz 38
你可以连续几轮排序,因为python sort是稳定的.您需要先对辅助密钥进行排序.另见官方如何.
from operator import itemgetter
l = [['a',2], ['a',1], ['b', 2], ['a',3], ['b',1], ['b',3]]
l.sort(key=itemgetter(1))
l.sort(key=itemgetter(0), reverse=True)
# [['b', 1], ['b', 2], ['b', 3], ['a', 1], ['a', 2], ['a', 3]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34548 次 |
| 最近记录: |