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

如何在Pandas中按距离排序含坐标数组与距离值的列表

解决TSP解决方案列表的排序问题

针对你要按路径欧氏距离从小到大排序(坐标数组+距离)列表的需求,直接用Python内置的排序方法就能解决,避开之前的坑:

  • 方法1:生成新的排序后列表
    假设你的列表每个元素是[路径坐标数组, 欧氏距离](比如[[[0,0],[1,1],[2,0]], 4.24]),直接指定排序的key为每个元素的距离值:

    # 示例列表
    tsp_solutions = [
        [[0,0],[2,2],[3,1]], 5.66,
        [[0,0],[1,1],[3,1]], 4.47,
        [[0,0],[3,1],[2,2]], 5.10
    ]
    # 按距离从小到大排序,生成新列表
    sorted_solutions = sorted(tsp_solutions, key=lambda x: x[1])
    

    这个方法完全不会改动坐标数组内部的元素顺序,只按距离排序整个条目。

  • 方法2:原地修改原列表排序
    如果不想生成新列表,用列表自带的sort()方法,同样指定key:

    tsp_solutions.sort(key=lambda x: x[1])
    

为什么之前的方法不行?

  • 用list.sort_values()(应该是pandas的方法)出问题,是因为坐标数组作为列表类型,在DataFrame里排序时可能被当作可迭代元素拆解,导致内部乱序;
  • 转字典报错是因为列表是可变类型,不可哈希,不能作为字典的键,自然触发TypeError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 12:05:38