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

Python解析JSON提取字段报TypeError列表索引错误如何解决

问题解决方法

错误根源

你遇到的TypeError: list indices must be integers or slices, not str报错,是因为i['data']['rows']对应的数据类型是列表(数组),不能直接用字符串'dimensions'作为索引访问,需要先遍历rows列表中的每一个元素,再提取目标字段。

对照你提供的JSON结构,层级关系如下:

  • 根节点是列表,每个元素包含data字段
  • data下的rows是所有数据行的列表
  • 每个row元素包含dimensions(城市列表)和metrics(指标列表)
  • metrics下的每个元素包含values(指标值列表)

正确提取代码

以下代码可完成dimensions和values的提取,同时支持直接转换为pandas DataFrame:

import json
import pandas as pd

with open('test.json', encoding='utf-8') as f:
    raw_json = json.load(f)

# 存储提取结果的列表
extract_result = []

for report in raw_json:
    rows = report['data']['rows']
    # 遍历每一行数据
    for row in rows:
        # 提取dimensions中的城市名
        city = row['dimensions'][0]
        # 提取values中的用户数
        user_num = int(row['metrics'][0]['values'][0])
        extract_result.append({
            "ga:city": city,
            "ga:users": user_num
        })
        # 打印验证可按需开启
        # print(f"城市:{city},用户数:{user_num}")

# 转换为DataFrame做后续处理
df = pd.DataFrame(extract_result)
# 打印前5行验证
print(df.head())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:54:04