如何按总元素数量对三维列表进行排序?
按三维列表分组的总元素数量排序
要实现按每个分组的总元素数量排序,你需要自定义排序的key函数,计算每个分组下所有子列表的元素总数——而直接用len()只会统计分组内的子列表个数,这就是你之前方法无效的原因。
解决方案代码
original_list = [ [['4', '10'], ['2', '6'], ['1', '3']], [['1', '4', '10'], ['5', '2', '6'], ['11', '1', '3']] ] # 按总元素数量降序排序,让元素多的分组排在前面 sorted_list = sorted(original_list, key=lambda group: sum(len(sublist) for sublist in group), reverse=True) print(sorted_list)
代码说明
lambda group: sum(len(sublist) for sublist in group):这个匿名函数会遍历每个分组里的子列表,累加所有子列表的长度,得到该分组的总元素数,以此作为排序依据。reverse=True:指定降序排列,若需要升序(元素少的在前),去掉该参数即可。
如果要直接修改原列表的顺序,使用list.sort()方法:
original_list.sort(key=lambda group: sum(len(sublist) for sublist in group), reverse=True)
内容的提问来源于stack exchange,提问作者TRzende
相关产品推荐
相关产品推荐

