【问题标题】:Python3 Slicing, TypeError: list indices must be integers or slices, not listPython3 Slicing,TypeError:列表索引必须是整数或切片,而不是列表
【发布时间】:2019-11-17 18:24:43
【问题描述】:

我想通过 API 为数组中的每个元素从 .json 格式中提取信息。

我尝试使用下面的代码,但出现错误。

# Get the response from the API endpoint.
response = requests.get("http://api.open-notify.org/astros.json")
data = response.json()
print(data["people"][0:2]["name"])

我希望看到列出的每个名称而不是错误:

TypeError:列表索引必须是整数或切片,而不是列表

我知道 [O:2] 数组中有错误。有人可以帮忙吗?

【问题讨论】:

  • 您必须遍历包含键为name 的字典的数组,尝试运行names = [di['name'] for di in data["people"][0:2]],这里names 将存储您要获得的names 的列表(数组)。
  • 你能举个你的json例子吗

标签: python python-3.x api slice


【解决方案1】:

由于data["people"][0:2] 是一个列表(在ipython 中尝试type(data["people"][0:2]),你不能使用字符串索引来引用它的元素。

如果您想要的是列表中从 0 到 2(不包括 2)索引的人员的姓名列表,您想要的是:

print( [x["name"] for x in data["people"][0:2] ) 

【讨论】:

    【解决方案2】:

    data["people"][0:2]返回列表[{'craft': 'ISS', 'name': 'Alexey Ovchinin'}, {'craft': 'ISS', 'name': 'Nick Hague'}]

    你应该迭代列表

    name = [x['name'] for x in data["people"][0:2]]
    print(name)
    

    O/P:

    ['Alexey Ovchinin','Nick Hague']
    

    【讨论】:

      猜你喜欢
      • 2017-11-08
      • 2018-10-13
      • 1970-01-01
      • 1970-01-01
      • 2016-09-16
      • 1970-01-01
      • 2019-07-04
      • 2015-12-09
      相关资源
      最近更新 更多