You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于数组中两个元素对数组列表按图中上下左右顺序排序?

解决方法

你的问题出在两次独立排序的逻辑上:第二次排序会完全覆盖第一次的排序结果,而且排序优先级搞反了。要实现从上到下、从左到右的排序,应该直接用复合排序键,先按行(top值)分组,再按列(left值)排序。

正确代码

sorted_list = sorted(my_list, key=lambda x: (x[3][3], x[3][2]))

逻辑说明

  • 元组(x[3][3], x[3][2])作为排序键时,Python会先按第一个元素(top值)升序排序——因为top值越小,元素在图片里越靠上,满足从上到下的顺序。
  • 当两个元素的top值接近(属于同一行)时,会再按第二个元素(left值)升序排序——left值越小,元素越靠左,满足同一行内从左到右的顺序。

为什么之前的方法不行

你先按left排序、再按top排序的操作,第二次排序会完全基于top重新排列,之前按left排好的顺序会被打乱,自然无法保证同一行内从左到右的顺序。而且排序的优先级应该是先行后列,而不是先列后行。

内容的提问来源于stack exchange,提问作者InterestingPenguin80

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 07:25:24