我正在做一个作业,我写了一个程序,从URL中检索数据:http://derekowens.com/cs/satellites.aspx?p={planet}在哪里代替{planet},我可以把我们太阳系中的一个行星,如地球,木星等。这个URL然后给我关于输入行星卫星的数据。我的程序检索这些数据,将JSON字符串中的数据加载到Python变量中,然后检查orbit_radius数据以确定哪个卫星离行星最近。代码如下:
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)
data = json.loads(response.read())
print(data)
moons = data["satellites"]
closest_moon = min(moons, key=lambda x: x["orbit_radius"])["moon"]
print(f"{planet}, {closest_moon}, {min(moons, key=lambda x: x['orbit_radius'])['orbit_radius']}")
但是,在执行代码之后,我一直收到错误:
moons = data["satellites"]
TypeError: list indices must be integers or slices, not str
我如何修复这个问题,使我的代码正确运行并显示六行输出,六个行星中的每一个都有一行信息,格式如下:
行星名称月球名称轨道半径
感谢您的评分
1条答案
按热度按时间ddarikpa1#
查看服务器的响应,您得到的是一个列表而不是字典。
正确的代码可能如下所示:
图纸: