如何按项目数对列表列表进行排序?蟒蛇

问题描述 投票:0回答:1

我有一个清单:

[[['4', '10'], ['2', '6'], ['1', '3']], [['1', '4', '10'], ['5', '2', '6'], ['11', '1', '3']]]
我想按项目总数排序。第一组有第 4、10、2、6、1、3 项,总共 6 项。第二个有 1、4、10、5、2、6、11、1 和 3,总共 9 个元素。所以我希望第二组出现在第一组之前:
[[['1', '4', '10'], ['5', '2', '6'], ['11', '1', '3']], [['4', '10'], ['2', '6'], ['1', '3']]]
(列表中有更多组,这只是问题的射击版本)

我尝试进行排序(key=len),但它是按每个组拥有的列表数量排序的。 (比如,第一组有 3 个列表,第二组也有 3 个)

python list sorting
1个回答
0
投票

据我了解,您想要的是根据每个列表中包含的所有列表的长度总和进行排序。您可以做的是同时使用

sum
len
(以及将它们组合起来的
map
)来实现您的目标:

ls = [[['4', '10'], ['2', '6'], ['1', '3']], [['1', '4', '10'], ['5', '2', '6'], ['11', '1', '3']]]

sorted_ls = sorted(ls, key=lambda l: sum(map(len, l)), reverse=True)

请注意,

sorted
将返回按升序排序的列表,因此我们通过
reverse=True
对其进行降序排序。

© www.soinside.com 2019 - 2024. All rights reserved.