繁体   English   中英

对元组列表进行排序,其中元组的第二个元素为列表

[英]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

任何帮助将不胜感激

我认为关键应该只是列表的总和,而不是元组,这意味着:

c = sorted(b, key=lambda x: sum(x[1]))

阅读有关排序的更多信息。

>>> 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM