You need to enable JavaScript to run this app. Python报错列表索引必须为int或float而非str类型如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Python报错列表索引必须为int或float而非str类型如何解决

报错核心原因
  • 触发「列表索引必须为int或float类型而非str类型」报错的直接原因:NewsAPI返回的响应结构中,news_dict["articles"]对应的值是Python列表类型,列表仅支持整数、浮点值做索引,不支持字符串类型的键做索引。你写的news_dict["articles"]["title"]代码,直接把字符串"title"当索引去操作列表,完全不符合列表的索引规则,就会触发报错。
  • 逻辑错配点:单条新闻的title字段,是存放在articles列表的每一个元素(单条新闻的独立字典)里的,不是直接作为键挂在articles这个列表对象下的。
  • 冗余写法问题:给requests.get方法传data="hello"属于不规范操作,GET请求没有请求体语义,这部分参数不会直接触发报错,但属于完全多余的写法。
修正后的可运行代码
import requests
import json

# 移除GET请求冗余的data参数
url = "http://newsapi.org/v2/top-headlines?country=in&apiKey=ac871f6d1b7b4f46bd71d9c4df281f12"
# 直接请求获取响应文本
news_resp_text = requests.get(url=url).text
news_dict = json.loads(news_resp_text)
# articles是列表,遍历列表里的每个新闻字典提取title
all_titles = [news_item["title"] for news_item in news_dict["articles"]]
print(all_titles)
调试避坑提示
  • 对接第三方API时,先打印一次返回字段的类型(比如print(type(news_dict["articles"]))),确认结构后再做取值操作,就能避免类型不匹配的低级错误。
  • 如果只需要获取单条新闻的标题,要先给列表传整数索引定位到具体新闻条目,再用字符串键取对应字段,比如取返回列表里的第一条头条标题:news_dict["articles"][0]["title"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.04 20:45:02