【问题标题】:Sorting my multiple items in a tuple [duplicate]在一个元组中对我的多个项目进行排序[重复]
【发布时间】:2017-10-12 13:55:21
【问题描述】:

我有以下元组列表:

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

这不是我所期望的。

谁能提供任何线索如何解决这个问题?

【问题讨论】:

    标签: python sorting


    【解决方案1】:

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

      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)]
    

    【讨论】:

    • 不幸的是,这段代码的输出仍然是[(0, 1), (2, 3), (2, 4), (3, 5), (6, 7)],这不是OP想要的
    • 没错。我希望下次仅对 (2,3) 和 (2,4) 进行反向排序
    • @SubhayanBhattacharya 已更改
    猜你喜欢
    • 2019-04-18
    • 2019-05-15
    • 2022-11-01
    • 2016-05-29
    • 2017-06-09
    • 2017-03-21
    • 2019-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多