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

Python访问复杂JSON数据触发TypeError错误的排查与解决咨询

解决TypeError: list indices must be integers or slices, not str的问题

我来帮你拆解问题根源,以及对应的修复方案:

错误原因分析

你遇到的这个报错,核心是没分清JSON结构里列表([])和字典({})的访问规则:

  • 外层的data是一个列表(用[]包裹),列表只能用整数下标(比如data[0])访问元素,不能直接用字符串键(比如"portfolio_item_list")去索引。
  • 其次,portfolio_item_list本身也是一个列表,里面才是包含stats的字典对象,你需要遍历这个列表里的每一项,再去访问stats内容。

修正后的代码

# 先拿到data列表里的第一个协议数据(字典类型)
protocol_data = data[0]
# 遍历portfolio_item_list中的每一项投资组合
for portfolio_item in protocol_data["portfolio_item_list"]:
    # 取出当前项的统计数据
    stats = portfolio_item["stats"]
    print(stats["asset_usd_value"], stats["debt_usd_value"], stats["net_usd_value"])

如果想要更简洁的写法,也可以直接链式访问:

for portfolio_item in data[0]["portfolio_item_list"]:
    stats = portfolio_item["stats"]
    print(stats["asset_usd_value"], stats["debt_usd_value"], stats["net_usd_value"])

运行结果验证

执行这段代码后,会输出你需要的投资组合统计数据:

20.258310032314448 0.03452806117121324 20.223781971143236

小技巧

以后碰到复杂JSON结构时,可以用print(json.dumps(data, indent=2))把数据格式化打印出来,或者把JSON内容复制到格式化工具里展开查看,这样能更直观地区分列表和字典,避免索引错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 14:32:36