muk*_*pan 3 python tuples python-3.x
我的关注涉及我的一个变量,它在列表中包含元组,如下所示。
test = [(['a','b','c'],[3,2,5]),(['d','e','f'],[1,5,6]),(['g','h','j'],[1,2,4])]
Run Code Online (Sandbox Code Playgroud)
例如,我正在尝试获取列表的第二个元组元素的总和,[3,2,5]并根据该总和对它们进行排序。所以求和的结果应该是。
result1 = [(['a','b','c'],[10]),(['d','e','f'],[12]),(['g','h','j'],[7])]
Run Code Online (Sandbox Code Playgroud)
那么我预期的最终结果应该按降序排序。
result = [['d','e','f'],['a','b','c'],['g','h','j']]
Run Code Online (Sandbox Code Playgroud)
优雅的单衬:
result = [a for a, b in sorted(test, key = lambda x : sum(x[1]), reverse=True)]
Run Code Online (Sandbox Code Playgroud)
sorted 在这种情况下,使用传递的可迭代对象返回一个排序列表 test
key定义排序的基础。这是一个 lambda 表达式,它接受元组x并返回元组第二部分的总和sum(x[1])
reverse 设置为按降序排序
最后,我们使用列表推导式去掉数字部分b,只保留字母a