Python,如何基于总和对列表进行排序

a = [('dog', 4, 5), ('cat', 1, 3), ('house', 6, 3), ('car', 1, 1), ('boyfriend', 2, 2), ('doll', 1, 1)

如何基于两个数字之间的总和以降序对列表进行排序,如果总和相同,如何根据第一个元素对其进行排序?

我的清单应该是:

a = [('dog', 4, 5), ('house', 6, 3), ('boyfriend', 2, 2), ('cat', 1, 3), ('car', 1, 1), ('doll', 1, 1) 

解决方法:

使用自定义键函数返回一个元组,其中第一项是总和,第二项是每个子元素的第一项:

In [2]: sorted(a, key=lambda item: (-(item[1] + item[2]), item[0]))
Out[2]: 
[('dog', 4, 5),
 ('house', 6, 3),
 ('boyfriend', 2, 2),
 ('cat', 1, 3),
 ('car', 1, 1),
 ('doll', 1, 1)]

请注意,我们会将负数之和返回按该和进行反向排序,并保持对二级键排序的要求不断提高.

上一篇:java-是否可以在恒定时间内添加/更新排序列表?


下一篇:PHP-从MySQL中的多个表对产品价格进行排序