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

如何实现按Y降序、X升序排序坐标对列表?

问题描述

需要对一组坐标对列表排序,规则为:以Y值降序为首要条件,X值升序为平局决胜条件。

输入列表:

[['0', '0'], ['0', '1'], ['1','1'], ['2','1'], ['0', '2'], ['1','2'], ['2', '2'], ['3', '2']]

期望输出:

[['0', '2'], ['1','2'], ['2', '2'], ['3', '2'], ['0','1'], ['1', '1'], ['2','1'], ['0', '0']]

当前使用的错误代码:

sorted(table, key=lambda X: (int(X[1]),sorted(X[0],key=int)),reverse=True)

错误输出结果:

[['3','2'], ['2','2'], ['1','2'], ['0','2'], ['2','1'], ['1','1'], ['0','1'], ['0','0']]

询问如何修改才能实现仅Y值降序,同时保持X值升序?

解决方案

核心思路是:对Y值取负数来单独实现降序逻辑,X值保持正数实现升序,以此组合作为排序键,避免全局reverse=True同时反转两个维度的排序方向。

修改后的正确代码:

sorted(table, key=lambda x: (-int(x[1]), int(x[0])))

代码说明

  • -int(x[1]):将Y值转为整数后取负,原本更大的Y值会变成更小的负数,在排序时会被优先排列,实现Y值降序。
  • int(x[0]):将X值转为整数直接作为次要排序键,遵循默认的升序逻辑,实现X值升序。
  • 无需设置reverse=True,通过负号精准控制了Y的排序方向,同时保留X的升序规则。

运行该代码后,将得到你期望的排序结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 06:32:35