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

TypeError求助:道路最短路径计算函数报列表索引类型错误

搞定这个列表索引类型错误!

嘿,先看你抛出的错误提示:

TypeError: list indices must be integers, not str

这个问题其实很好定位,我们一步步来捋:

第一个坑:变量名笔误

你的函数参数是line,但在调用g.inv()的时候,你写了lines['coordinates'][l+1][0]——多了个s!如果lines是个字典(不是列表),那用整数l+1去索引它肯定会报错,因为字典只认字符串/哈希类型的键,不认整数索引呀。

第二个要确认的点:line['coordinates']的结构

你得先搞清楚line['coordinates']到底是列表还是字典:

  • 如果它是坐标点组成的列表,那用整数l索引完全没问题;
  • 如果它是字典(比如键是字符串),那line['coordinates'][l]这种写法就会触发同样的错误,这时候你得调整遍历方式,比如先把字典里的坐标值提取出来再处理。

修正后的代码

先把最显眼的笔误改了,顺便帮你修正了遍历范围的小问题(原代码len(line)-1应该是len(line['coordinates'])-1,不然遍历的不是坐标点):

def shortestPath1(g, line):
    # 初始化累计路径长度
    cumulativeLength = 0
    # 遍历坐标点列表,从第0个到倒数第2个(因为要和下一个点配对)
    for l in range(len(line['coordinates']) - 1):
        # 把lines改成line,统一变量名
        azF, azB, distance = g.inv(
            line['coordinates'][l][0], 
            line['coordinates'][l][1], 
            line['coordinates'][l+1][0], 
            line['coordinates'][l+1][1]
        )
        cumulativeLength += distance
    return cumulativeLength

额外排查小技巧

要是改完还报错,先打印一下line['coordinates']的类型和内容,确认它的结构:

print("coordinates的类型:", type(line['coordinates']))
print("coordinates的内容:", line['coordinates'])

如果输出显示是字典,那你得重新梳理数据结构,把坐标点整理成列表再计算路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:18:06