【问题标题】:Sort nested lists by the first element in lists按列表中的第一个元素对嵌套列表进行排序
【发布时间】:2019-07-03 17:28:04
【问题描述】:

我需要根据每个列表中的第一个元素对嵌套列表进行排序...

所以我有以下内容:

 input = [['ABCMeter', 'six', 'page','car=frog'],['ABCarrow','mall','cop''xmlVal'],['ABCcomp','eleven','computer'],['ABCliz','one']]

我需要对它们进行排序:

output = [['ABCarrow','mall','cop''xmlVal'], ['ABCcomp','eleven','computer'], ['ABCliz','one'], ['ABCMeter', 'six', 'page','car=frog']]

我尝试了以下方法,但没有成功(以及其他几种排序方法):

split_into_lists = input.sort(key=lambda x: x[0])

【问题讨论】:

    标签: python python-2.7


    【解决方案1】:

    您只是使用了错误的功能; sort 方法就地修改列表并返回 None。请改用sorted 来返回一个新列表。

    split_into_lists = sorted(input, key=lambda x: x[0])
    

    【讨论】:

    • 或者直接调用.sort而不分配返回值,使用原来的list。我会注意到,如果每个 list 的第一个元素是唯一的,或者如果您可以在出现平局的情况下比较回退到第二个、第三个等元素,则不需要 key 参数; lists 按字典顺序比较,所以它已经优先比较第一个元素,并且只有在第一个元素相等时才检查后续元素。
    【解决方案2】:

    另外,预期的输出与 String 对象的排序条件不匹配。

    例如: ABCMeterABCarrow

    它逐个字符比较,如果相等,则比较下一个。由于M小于a(见ASCII表),ABCMeterABCarrow

    【讨论】:

      【解决方案3】:
      split_into_lists = sorted(input, key=lambda x: x[0].casefold())
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-08
        • 2017-02-08
        • 1970-01-01
        • 1970-01-01
        • 2012-03-08
        • 1970-01-01
        • 2019-01-17
        • 1970-01-01
        相关资源
        最近更新 更多