Python按多个条件排序

发布于 2021-01-29 19:00:29

我有一个列表,其中每个元素都是形式[list of integers, integer]。例如,列表的元素可能看起来像这样[[1,3,1,2], -1]

我想通过以下条件对包含描述的元素类型的列表进行排序:

  1. 如果两个元素的整数列表(即element[0])的长度不同,则整数列表较小的元素是较小的元素。

  2. 否则,如果整数列表的长度相同,则较小的元素是第一个整数的较小整数,这两个元素的整数列表都不同。例如:

[[1,1,99,100],-1] <[[1,1,100,1],-1],因为99 <100。

  1. 否则,如果整数列表相同,则较小的元素是中的较小整数的元素element[1]

如何编写可以传递给sorted()或sort()的适当键函数?

关注者
0
被浏览
50
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    列出密钥中的三个条件:

    sorted(inputlist, key=lambda e: (len(e[0]), e[0], e[1]))
    

    现在,您首先按长度对每个元素进行排序,然后直接比较第一个元素(仅当第一个元素的长度相等时才使用),然后按最后一个整数的值排序。

    Python按照字典顺序对元组和列表进行排序;比较第一个元素,只有在没有区别的情况下,才比较第二个元素,依此类推。

    这里的第二个元素e[0]仅在两个比较条目都具有相等长度的嵌套列表时才使用。再次按字典顺序对这些元素进行比较,因此将元素配对直到一对不同为止。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看