你能帮我搞清楚吗
q = [[12, 13, 14], [8, 9, 10,11], [2, 3, 4], [5, 6, 7]]
假设我有一个像q这样的列表,我如何根据
对其进行排序输出应为:
q = [[8,9,10,11],[12,13,14][5,6,7],[1,2,3]]
答案 0 :(得分:5)
在key
:
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))