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

如何对Coordinate列表进行自定义排序以得到预期结果?

自定义坐标排序解决方案

看起来你想要的排序规则是先把y值不等于42的坐标按x轴升序排列,再把y值等于42的坐标也按x轴升序排列放在后面——而不是单纯按x再y的全局排序。

实现代码

你可以通过自定义排序key来精准实现这个需求:

coordinates = [(229, 42), (159, 42), (50, 42), (114, 6), (52, 6), (308, 5), (193, 3)]
sorted_coords = sorted(coordinates, key=lambda k: (1 if k[1] == 42 else 0, k[0]))
print(sorted_coords)

运行结果

执行后会输出你预期的排序结果:

[(52, 6), (114, 6), (193, 3), (308, 5), (50, 42), (159, 42), (229, 42)]

逻辑解释

这个排序key是一个二元组,核心逻辑分为两步:

  1. 分组优先级:元组第一个元素1 if k[1] ==42 else 0,给y=42的坐标标记为1,其余标记为0。因为默认是升序排序,所以标记为0的组(非y=42的坐标)会整体排在标记为1的组前面。
  2. 组内排序:元组第二个元素k[0],让同一组内的坐标按x轴数值升序排列,完美匹配你预期的子组排序规则。

如果之后需要调整分组逻辑(比如区分其他特定y值),只需要修改第一个元素的判断条件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:32:48