在元组中对我的多个项目进行排序

时间:2017-10-12 13:55:21

标签: python sorting

我有下面的元组列表:

[(6,7),(0,1),(2,4),(3,5),(2,3)]

我必须先按第一个元素对元组进行排序,然后如果第一个元素相同,我必须按降序排列第二个元素。

所以输出应该是:[(0, 1), (2, 4), (2, 3), (3, 5), (6, 7)]

我尝试了以下代码进行双重排序:

from operator import itemgetter
intervals = [(6,7),(0,1),(2,4),(3,5),(2,3)]
sorted_intervals = sorted(sorted(intervals,key=itemgetter(0)),key=itemgetter(1),reverse=True)
print (sorted_intervals)

但它产生的输出如下:

[(6, 7), (3, 5), (2, 4), (2, 3), (0, 1)]

这不是我所期望的。

任何人都可以提供任何解决方法吗?

1 个答案:

答案 0 :(得分:-2)

你可以通过给出第二个元素的负值来实现它

  data = [(6,7),(0,1),(2,4),(3,5),(2,3)]
  print sorted(data, key=lambda x: (x[0],-x[1]))

输出:

[(0, 1), (2, 4), (2, 3), (3, 5), (6, 7)]