【问题标题】:Order list according to two items [duplicate]根据两个项目的订单列表[重复]
【发布时间】:2013-07-30 13:28:51
【问题描述】:

假设我有一个由多个列表组成的列表,每个列表包含两个项目:

a = [[14, 0.5], [12, 0.8], [22, 0.6], [15, 0.2], [17, 0.5], [18, 0.4]]

我需要先根据每个列表中的 second 项从 ma​​x 到 min 重新排序此列表,然后根据 first 项重新排序从最小到最大

我知道如何根据两个项目重新排序列表,首先使用第二项,然后使用第一项:

b = sorted(a, key=lambda item:(item[1], item[0]))
b = [[15, 0.2], [18, 0.4], [14, 0.5], [17, 0.5], [22, 0.6], [12, 0.8]]

但这会返回一个列表,从 min 到 maxboth 项排序,这不是我需要的。

b 应该是这样的:

b = [[12, 0.8], [22, 0.6], [14, 0.5], [17, 0.5], [18, 0.4], [15, 0.2]]

【问题讨论】:

    标签: python list


    【解决方案1】:

    你可以使用负值:

    b = sorted(a, key=lambda item:(-item[1], item[0]))
    

    【讨论】:

      【解决方案2】:

      只需反向使用您想要的项目的否定:

      >>> b = sorted(a, key=lambda item:(-item[1], item[0]))
      >>> b
      [[12, 0.8], [22, 0.6], [14, 0.5], [17, 0.5], [18, 0.4], [15, 0.2]]
      

      【讨论】:

      • 由于你和 w.m 几乎同时回答了同样的问题,我将他的回答标记为已接受以提高他的声誉(你有很多!:)。谢谢你们!
      • @Gabriel。哈哈。我喜欢你的推理。 :) 但实际上,不需要。不客气:)
      猜你喜欢
      • 2023-04-03
      • 1970-01-01
      • 2019-06-23
      • 2016-02-27
      • 2021-02-09
      • 2017-03-02
      • 2020-12-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多