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

Python3如何将包含嵌套字典、列表的复杂对象列表转换为CSV格式

Python3 复杂嵌套对象转CSV的实现方案

下面提供两种符合Python规范、低维护成本的方案,可根据需求选择:

方案1:标准库实现(优先推荐,适配你的需求场景)

仅依赖Python内置标准库,无第三方依赖,兼顾可读性和100%数据还原性,自动适配结构不一致的输入数据。

实现代码

import csv
import json
import sys

# 此处替换为你解析JSON后得到的字典列表
input_data = [
    {"pKey1": 1, "pKey2": ['a', 'b', 'c'], "pKey3": {"dKey1": "val1", "dKey2": "val2"}},
    {"pKey1": (2, 3), "pKey2": "This is different", "pKey3": ["Very", ("Very", "Different")]}
]

def serialize_val(val):
    # 基础类型直接输出,非基础类型转标准JSON字符串存储
    if isinstance(val, (str, int, float, bool, type(None))):
        return val
    return json.dumps(val, ensure_ascii=False)

# 自动收集所有出现过的键,适配结构不一致的场景
all_keys = set()
for item in input_data:
    all_keys.update(item.keys())
all_keys = sorted(all_keys) # 可根据需要调整列的排序规则

# 输出到标准输出,适配管道调用
csv_writer = csv.writer(sys.stdout)
csv_writer.writerow(all_keys)
for item in input_data:
    row = [serialize_val(item.get(key)) for key in all_keys]
    csv_writer.writerow(row)

方案优势

  • 逻辑极简,总代码量不到30行,无复杂逻辑,非开发人员也能快速理解
  • 完美适配管道调用场景,输出直接到stdout,符合你提到的python3 script1.py | tee file.csv | python3 script2.py用法
  • 可还原性100%,需要恢复原始数据结构时,只需要对每个字段做JSON反序列化即可,示例还原逻辑:
    def deserialize_val(val):
        if not isinstance(val, str):
            return val
        try:
            return json.loads(val)
        except (json.JSONDecodeError, ValueError):
            return val
    
  • 输出的CSV可直接用Excel、记事本打开,非基础类型的内容是标准JSON格式,可读性高。

方案2:全展平输出(适合需要直接用Excel做数据分析的场景)

如果需要把嵌套结构完全展开成二维表格,使用pandas官方提供的json_normalize方法即可,不需要自己写任何展平逻辑。

实现代码

import pandas as pd
import sys

# 此处替换为你解析JSON后得到的字典列表
input_data = [
    {"pKey1": 1, "pKey2": ['a', 'b', 'c'], "pKey3": {"dKey1": "val1", "dKey2": "val2"}},
    {"pKey1": 2, "pKey2": ['d'], "pKey3": {"dKey1": "val3", "dKey2": "val4"}}
]

# 自动展平嵌套字典,生成`父键.子键`格式的列名
df = pd.json_normalize(input_data)
# 如果需要把列表类型的字段拆分成多行,指定对应列名即可,支持多列拆分
df = df.explode("pKey2", ignore_index=True)

# 输出到标准输出,utf-8-sig编码适配Excel中文不乱码
df.to_csv(sys.stdout, index=False, encoding="utf-8-sig")

输出效果

pKey1,pKey2,pKey3.dKey1,pKey3.dKey2
1,a,val1,val2
1,b,val1,val2
1,c,val1,val2
2,d,val3,val4

方案优势

  • 所有展平逻辑都是pandas官方标准实现,不需要维护自定义展平代码,厂商数据结构变动也能自动适配
  • 自动兼容结构不一致的输入数据,缺失字段自动填充空值
  • 输出的二维表格可以直接导入Excel做统计分析,不需要额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:12:03