我需要根据元素的长度对列表进行排序,然后根据内容进行排序。
例如,使用输入[[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]]
答案 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)