【问题标题】:Sort a list within the key domain [duplicate]对关键域中的列表进行排序[重复]
【发布时间】:2020-11-04 10:08:19
【问题描述】:

我有一个如下所示的列表:my_list = [('a', 4), ('z', 3), ('y', 3), ('x', 3), ('p', 2), ('o', 2)]

重要的是列表中的元组按第二个元素([1])降序排序。

现在我需要根据每个组中的第一个元素 ([0]) 以升序对具有相同第二个元素的每组元组进行排序。也就是说,我需要获取列表

my_new_list= [('a', 4), ('x', 3), ('y', 3), ('z', 3), ('o', 2), ('p', 2)].

如何使用正确的 lambda 编写排序函数?我不能只写my_list.sort(key=lambda item: item[0]),因为当元组按第二个元素排序时,它会破坏元组的降序。

我的 lambda 应该是什么样的?

【问题讨论】:

    标签: python sorting lambda


    【解决方案1】:
    my_list = [('a', 4), ('z', 3), ('y', 3), ('x', 3), ('p', 2), ('o', 2)]
    
    my_list = sorted(my_list, key=lambda k: (-k[1], k[0]))
    print(my_list)
    

    打印:

    [('a', 4), ('x', 3), ('y', 3), ('z', 3), ('o', 2), ('p', 2)]
    

    【讨论】:

      【解决方案2】:

      你的钥匙应该是:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-10-04
        • 2021-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-14
        • 2017-02-28
        相关资源
        最近更新 更多