如何用Python 2根据自定义行顺序排序二维锯齿列表?
解决方案
没问题,这个需求用Python的内置函数就能轻松搞定!核心思路是把a的每一行和b中对应的排序优先级绑定,然后按优先级排序,最后提取出行数据即可。
具体步骤如下:
- 用
zip(b, a)将b中的每个优先级值与a中对应的行打包成元组,得到类似(优先级, 行数据)的结构 - 使用
sorted()函数对打包后的元组序列排序,Python默认会按照元组的第一个元素(也就是b里的值)升序排列,正好匹配你想要的顺序 - 最后通过列表推导式提取每个元组中的行数据,得到排序后的
a
完整代码示例:
a = [[73, 74, 93, 97, 147], [5, 11, 12, 47], [987, 988, 989, 990, 991], [15, 16, 17, 22, 71, 988], [15, 16, 17]] b = [5, 3, 2, 4, 1] # 执行排序操作 sorted_a = [row for priority, row in sorted(zip(b, a))] # 验证结果 print(sorted_a)
运行这段代码后,输出的sorted_a就是你期望的结果:
[[15, 16, 17], [987, 988, 989, 990, 991], [5, 11, 12, 47], [15, 16, 17, 22, 71, 988], [73, 74, 93, 97, 147]]
如果之后需要按b的值降序排序,只需要给sorted()添加reverse=True参数即可:
sorted_a_desc = [row for priority, row in sorted(zip(b, a), reverse=True)]
内容的提问来源于stack exchange,提问作者Ombrophile
相关产品推荐
相关产品推荐

