如何基于元组中的另一个值(第三个值)按降序对元组的排序列表(基于第二个值)中的类似值进行排序

时间:2015-04-10 01:28:22

标签: python list sorting tuples

我有一个格式为

的元组列表
  

[( “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]

1 个答案:

答案 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由元组中第三个元素的否定值(即按第三个元素按降序排列)打破