基于最大长度和最大总和进行排序

时间:2016-08-26 03:31:22

标签: python list sorting

你能帮我搞清楚吗

q = [[12, 13, 14], [8, 9, 10,11], [2, 3, 4], [5, 6, 7]]

假设我有一个像q这样的列表,我如何根据

对其进行排序
  1. 子列表的最大长度和
  2. 子列表的最大总和
  3. 输出应为:

    q = [[8,9,10,11],[12,13,14][5,6,7],[1,2,3]]
    

2 个答案:

答案 0 :(得分:5)

key

的lambda函数中提供您的条件
sorted(q, key=lambda sub: (len(sub), sum(sub)), reverse=True)
>>> [[8, 9, 10, 11], [12, 13, 14], [5, 6, 7], [2, 3, 4]]

lambda函数将采用每个子列表x并根据len对其进行排序,如果len的结果不足以生成决定,其内容的sum用于打破平局。

答案 1 :(得分:3)

尝试:

sorted(q, lambda a,b: len(b)-len(a) or sum(b)-sum(a))