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

Sai*_*lli 1 python sorting list

你能帮我搞清楚吗?

q = [[12, 13, 14], [8, 9, 10,11], [2, 3, 4], [5, 6, 7]]
Run Code Online (Sandbox Code Playgroud)

假设我有一个像q这样的列表,我如何根据它进行排序

  1. 子列表的最大长度和
  2. 子列表的最大总和

输出应该是:

q = [[8,9,10,11],[12,13,14][5,6,7],[1,2,3]]
Run Code Online (Sandbox Code Playgroud)

Jim*_*ard 5

在lambda函数中提供您的标准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]]
Run Code Online (Sandbox Code Playgroud)

lambda函数将采用每个子列表x并根据它进行排序len,如果结果len不足以做出决定,则sum其内容用于打破平局.