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

Python代码报错:list indices must be integers or slices, not str 修复求助

问题修复方案

错误原因

你遇到的TypeError是因为目标URL返回的JSON数据本身就是一个卫星对象的列表,而非包含satellites键的字典。代码里data["satellites"]试图用字符串索引列表,自然触发类型错误。

修复后的代码

import urllib.request
import json

planets = ["Mars", "Jupiter", "Saturn", "Uranus", "Neptune", "Pluto"]
for planet in planets:
    url = f"http://derekowens.com/cs/satellites.aspx?p={planet}"
    response = urllib.request.urlopen(url)
    # 直接将API返回的卫星列表赋值给moons
    moons = json.loads(response.read())
    
    # 仅计算一次最近卫星,避免重复调用min方法
    closest_moon = min(moons, key=lambda x: x["orbit_radius"])
    print(f"{planet}, {closest_moon['moon']}, {closest_moon['orbit_radius']}")

关键修改说明

  • 移除了错误的moons = data["satellites"]语句,因为API返回的JSON本身就是卫星数据列表,无需提取satellites字段。
  • 优化了min方法的调用逻辑,只计算一次最近卫星数据,再从中提取名称和轨道半径,减少重复计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 08:38:10