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
相关产品推荐
相关产品推荐

