我有下面的元组列表:
[(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)]
这不是我所期望的。
任何人都可以提供任何解决方法吗?
答案 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)]