Python中如何按照嵌套列表的内层元素对列表进行多条件排序
Python嵌套列表多条件排序实现方法
直接使用Python内置的列表排序工具,自定义排序key即可实现需求,不需要引入额外第三方库。
核心逻辑说明
Python中布尔值True对应数值1,False对应数值0,将第一个元素取反后作为最高排序优先级,即可实现True排在False前面的要求;后续依次将第二、第三个元素作为次级、三级排序依据,默认升序排列即可匹配规则。
实现代码
方式1:直接修改原列表(使用list.sort())
my_list = [[False, 3, 82],[True,15,34], [False,22, 33], [True,2, 5], [False,1,67], [False, 22, 44], [True, 6, 99], [True, 14, 34], [False, 2, 82]] # 按规则排序 my_list.sort(key=lambda x: (-x[0], x[1], x[2])) # 输出验证结果 print(my_list)
方式2:生成新的排序后列表(使用sorted(),不修改原列表)
my_list = [[False, 3, 82],[True,15,34], [False,22, 33], [True,2, 5], [False,1,67], [False, 22, 44], [True, 6, 99], [True, 14, 34], [False, 2, 82]] sorted_list = sorted(my_list, key=lambda x: (-x[0], x[1], x[2])) # 输出验证结果 print(sorted_list)
两种方式运行后都可以得到你期望的排序结果:
[[True, 2, 5], [True, 6, 99], [True, 14, 34], [True, 15, 34], [False, 1, 67], [False, 2, 82], [False, 3, 82], [False, 22, 33], [False, 22, 44]]
内容的提问来源于stack exchange,提问作者Khan Khan
相关产品推荐
相关产品推荐

