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

Python遍历动态键嵌套字典提取指定字段导出CSV方法

实现方案

直接使用Python内置的csv标准库即可完成需求,无需安装第三方依赖,核心是通过遍历results节点的所有值提取目标字段,不需要提前预知动态的设备键名。

完整可运行代码

import csv

# 替换为你JSON解析后得到的原始字典
raw_dict = {
  "http_method":"GET",
  "results":{
    "FTKMOB21xxxxD":{
      "serial_number":"FTKMOB21xxxxD",
      "comments":"",
      "q_type":432,
      "license":"EFTM123123123",
      "type":"mobile",
      "user":"pippo",
      "user_type":"user",
      "drift":0,
      "status":{
        "name":"activated"
      }
    },
    "FTKMOB21xxxxF":{
      "serial_number":"FTKMOB21xxxxF",
      "comments":"",
      "q_type":432,
      "license":"EFTM123123123",
      "type":"mobile",
      "drift":0,
      "status":{
        "name":"pending"
      }
    }
  },
  "vdom":"root",
  "path":"user",
  "name":"fortitoken",
  "action":"",
  "status":"success",
  "serial":"FGT_VM",
  "version":"v7.0.5",
  "build":304
}

# 定义CSV表头
headers = ["serial_number", "user", "status"]
rows = []

# 遍历results下所有设备条目,动态键名无需处理,直接取字典值即可
for device in raw_dict["results"].values():
    current_row = {
        "serial_number": device.get("serial_number", ""),
        "user": device.get("user", ""),
        # status是嵌套字典,取内部name字段,缺值时返回空
        "status": device.get("status", {}).get("name", "")
    }
    rows.append(current_row)

# 写入CSV文件
with open("fortitoken_export.csv", "w", encoding="utf-8-sig", newline="") as f:
    writer = csv.DictWriter(f, fieldnames=headers)
    writer.writeheader()
    writer.writerows(rows)

关键说明

  • 不需要硬编码FTKMOB21xxxxD这类动态设备ID,调用字典的values()方法就能直接拿到所有设备的属性字典,直接循环即可
  • 写入文件时指定encoding="utf-8-sig"是为了兼容Excel打开时的中文乱码问题,newline=""是Python csv模块的标准要求,避免生成的文件出现多余空行
  • 所有字段取值都用get()方法实现,遇到个别设备缺失对应字段时不会抛出KeyError中断脚本,缺失内容会自动填充为空字符串
  • 运行后生成的CSV内容如下:
serial_number,user,status
FTKMOB21xxxxD,pippo,activated
FTKMOB21xxxxF,,pending

内容的提问来源于stack exchange,提问作者Andrea Del Gaudio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 01:27:33