首页 > 解决方案 > 如何根据列表中元组的第二个元素的总和对列表进行排序?

问题描述

我的担忧涉及我的一个变量,它在列表中具有如下的元组。

test = [(['a','b','c'],[3,2,5]),(['d','e','f'],[1,5,6]),(['g','h','j'],[1,2,4])]

例如,我正在尝试获取列表的第二个元组元素的总和,[3,2,5]并根据该总和对它们进行排序。所以这个总和的结果应该是。

result1 = [(['a','b','c'],[10]),(['d','e','f'],[12]),(['g','h','j'],[7])]

那么我预期的最终结果应该按降序排序。

result = [['d','e','f'],['a','b','c'],['g','h','j']]

标签: pythonpython-3.xtuples

解决方案


优雅的单排:

result = [a for a, b in sorted(test, key = lambda x : sum(x[1]), reverse=True)]

sorted使用传递的迭代返回一个排序列表,在这种情况下test

key定义排序的基础。这是一个 lambda 表达式,它接受元组x并返回元组第二部分的总和sum(x[1])

reverse设置为降序排序

最后,我们使用列表推导去除数字部分b,只保留字母a


推荐阅读