【问题标题】:Sorting list of lists by 3rd, 2nd, 1st element按第 3、第 2、第 1 个元素对列表进行排序
【发布时间】:2019-10-04 16:50:31
【问题描述】:

我有一个列表,例如:

[[5, 8, 12], [6, 8, 10], [9, 20, 31], [14, 16, 13],...,[19,9,44]]

如何按每个子数组中的第 3 个元素,然后按 eacy 子数组中的第 2 个元素然后按第一个元素的升序对它进行排序(最好在 Python 中)?

【问题讨论】:

    标签: python python-3.x list sorting


    【解决方案1】:

    您可以在key 参数中使用sorteditemgetter 以相反的顺序获取项目:

    from operator import itemgetter
    l = [[5, 8, 12], [6, 8, 10], [9, 20, 31], [14, 16, 13],[19,9,44]]
    
    sorted(l, key=itemgetter(2,1,0))
    # [[6, 8, 10], [5, 8, 12], [14, 16, 13], [9, 20, 31], [19, 9, 44]]
    

    或者使用 lambda 函数:

    sorted(l, key=lambda x: x[::-1])
    # [[6, 8, 10], [5, 8, 12], [14, 16, 13], [9, 20, 31], [19, 9, 44]]
    

    【讨论】:

      【解决方案2】:

      使用从每个子列表中检索第三个元素并使用它的键函数。

      l = [[5, 8, 12], [6, 8, 10], [9, 20, 31], [14, 16, 13],...,[19,9,44]]
      l.sort(key=lambda x: x[2])
      

      或者你可以使用itemgetter

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-22
        • 2012-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-18
        • 1970-01-01
        相关资源
        最近更新 更多