按内部列表中元素的总和对元组列表进行排序

时间:2018-12-11 21:37:01

标签: python list sorting tuples

我试图产生一个函数,该函数返回list> tuple> list组合中各个数字的和的排序列表。示例:

unsorted_list = [('red', [5, 2, 1]), ('blue', [1, 0, 1]), ('green', [2, 3, 2])]

程序需要查看列表中的数字,将它们相加(8,2,7),然后对数字进行排序,以使排序后的列表与未排序的列表具有相同的格式,但按数字。

要生成这样的列表:

sorted_list = [('blue', [1, 0, 1]), ('green', [2, 3, 2]), ('red', [5, 2, 1])]

请注意数字本身如何不改变顺序-这是关键要求,因为它与坐标有关。只是列表元素基于数字总和的顺序。

1 个答案:

答案 0 :(得分:2)

您可以使用lambda函数作为键进行排序。此lambda函数返回未排序列表中元组的list元素的总和:

>>> sorted(unsorted_list, key=lambda x: sum(x[1]))
[('blue', [1, 0, 1]), ('green', [2, 3, 2]), ('red', [5, 2, 1])]