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

Python从JSON提取moonPhase触发TypeError的问题求助

问题原因及解决方法

问题根源

TypeError: list indices must be integers or slices, not str 这个错误说明你代码里的 j['data'] 是列表类型,而非字典。列表只能用整数(比如0、1)或切片来索引元素,不能直接用字符串键(比如'moonPhase')取值,所以直接写j['data']['moonPhase']会报错。

正确提取方法

根据data列表的实际结构,分两种情况处理:

情况1:data列表仅包含一个字典元素

直接通过整数索引0取出列表里的字典,再访问moonPhase字段:

print(j['data'][0]['moonPhase'])

情况2:data列表包含多个字典元素

需要遍历列表里的每个元素,逐个提取moonPhase:

for item in j['data']:
    print(item['moonPhase'])

额外验证步骤

你可以先打印j['data']的类型,确认它是列表:

print(type(j['data']))  # 输出应该是 <class 'list'>

举个实际的JSON结构例子,方便你对应理解:

{
  "data": [
    {"moonPhase": "满月", "date": "2024-09-17"},
    {"moonPhase": "新月", "date": "2024-09-30"}
  ]
}

针对这个结构,用上面的第二种方法就能提取出所有moonPhase的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:00:59