![](/img/trans.png)
[英]Sorting a list of tuples by the addition of second and third element of the tuple
[英]Sorting a list of tuples with the second element of tuple being a list
我有一个元组列表
[("Alice", [1, 2, 1, 1, 1, 1]), ("Bob", [3, 1, 5, 3, 2, 5]), ("Clare", [2, 3, 2, 2, 4, 2]), ("Dennis", [5, 4, 4, 4, 3, 4]), ("Eva", [4, 5, 3, 5, 5, 3])]
我想要输出:
[("Alice", [1, 2, 1, 1, 1, 1]), ("Clare", [2, 3, 2, 2, 4, 2]), ("Bob", [3, 1, 5, 3, 2, 5]),("Dennis", [5, 4, 4, 4, 3, 4]), ("Eva", [4, 5, 3, 5, 5, 3])]
我希望通过基于其中的列表总和对元组进行排序。
目前我有:
c = sorted(b, key=lambda x: (x[0], sum(x[1])))
return c
任何帮助将不胜感激
>>> lst=[("Alice", [1, 2, 1, 1, 1, 1]), ("Bob", [3, 1, 5, 3, 2, 5]), ("Clare", [2, 3, 2, 2, 4, 2]), ("Dennis", [5, 4, 4, 4, 3, 4]), ("Eva", [4, 5, 3, 5, 5, 3])]
>>> sorted(lst, key=lambda x:sum(x[1]))
[('Alice', [1, 2, 1, 1, 1, 1]), ('Clare', [2, 3, 2, 2, 4, 2]), ('Bob', [3, 1, 5, 3, 2, 5]), ('Dennis', [5, 4, 4, 4, 3, 4]), ('Eva', [4, 5, 3, 5, 5, 3])]
如果您需要进行排序(使用排序结果更新列表):
x = [("Alice", [1, 2, 1, 1, 1, 1]), ("Bob", [3, 1, 5, 3, 2, 5]), ("Clare", [2, 3, 2, 2, 4, 2]), ("Dennis", [5, 4, 4, 4, 3, 4]), ("Eva", [4, 5, 3, 5, 5, 3])]
x.sort(key=lambda i: sum(i[1]))
如果您想要一个包含排序结果的新列表,可以像@Reut Sharabani建议的那样进行操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.