我有一个格式为
的元组列表[( “d”,21,5),(E,21,4),( “A”,20,1),( “B”,20,3),( “C”,20,2 ),...]
其中第一个值(a,b,c等)是唯一的,而元组中的其他两个值可能重复。(如20)
我想按元组中的第二个元素(此处为20,21)按升序对列表进行排序,如
[A,B,C,d,E]
然后我希望基于相同数字排序的值,如(a,b,c),其中基于20和(d,e)基于21排序,基于第3个值进行排序(此处为1,2,3, 4,5)元组按降序排列,如
并[b,C,A,d,E]
答案 0 :(得分:2)
如果您的原始列表如下所示:
L = [("d",21,5),(e,21,4),("a",20,1),("b",20,3),("c",20,2),...]
然后,您可以通过在sort函数中定义2元组键来按照您想要的方式对其进行排序:
L.sort(key=lambda t: (t[1],-t[2]))
这确保列表按元组中的第二个元素排序,而tie由元组中第三个元素的否定值(即按第三个元素按降序排列)打破