根据长度对python列表进行排序,然后根据内容进行排序

时间:2014-04-06 22:22:39

标签: python sorting

我需要根据元素的长度对列表进行排序,然后根据内容进行排序。 例如,使用输入[[1,2,3,4],[1,2,3],[2,3,4]],我需要获得[[1,2,3,4],[2,3,4],[1,2,3]]:[1,2,3,4]具有最大元素,然后[2,3,4]大于[1] ,2,3]在它的第一个元素。使用输入[[2,3,5],[1,2,3],[2,3,4]],当元素的长度相同时,应通过逐元素比较返回[[2,3,5],[2,3,4],[1,2,3]]

我可以根据元素的长度轻松地对列表进行排序,但是我怎么能在那之后求助呢?

>>> a = [[1,2,3,4],[1,2,3],[2,3,4]]
>>> sorted(a, key=len, reverse=True)
[[1, 2, 3, 4], [1, 2, 3], [2, 3, 4]]

3 个答案:

答案 0 :(得分:5)

别。排序一次。

key=lambda a: (-len(a), a)

答案 1 :(得分:0)

最简单的方法是让key返回一个元组。所以在这种情况下:

sorted(a, key=lambda item: (len(item), item), reverse=True)

答案 2 :(得分:0)

定义你自己的功能

 def comparing(a, b):
    if len(a) != len(b):
       return len(a) - len(b)
    else:
       return sum(a) - sum(b)