
本文介绍如何不依赖 numpy 或 itertools,仅用 python 原生语法将嵌套字典「按键转置」为 csv 行列结构,适用于导出为表格、生成报告等场景。
本文介绍如何不依赖 numpy 或 itertools,仅用 python 原生语法将嵌套字典「按键转置」为 csv 行列结构,适用于导出为表格、生成报告等场景。
在数据处理中,常遇到类似「外层键为列索引、内层键为行标题、值为单元格内容」的嵌套字典结构。若需将其转换为标准 CSV 表格(即行列互换),本质是执行一次字典转置(dictionary transpose):原结构中 data_dict[outer_key][inner_key] = value,目标结构应变为以 inner_key 为第一列(行头),各 outer_key 为后续列头,对应 value 按顺序填充。
以下是一个简洁、可读性强、完全基于 Python 内置语法的实现方案:
data_dict = { 1: {'One': 110, 'Two': 210, 'three': 310}, 2: {'One': 120, 'Two': 220, 'three': 320}, 3: {'One': 130, 'Two': 230, 'three': 330} } # 步骤 1:初始化临时字典,首行为列索引(空字符串 + 外层键列表) temp_dict = {"''": list(data_dict.keys())} # 步骤 2:遍历每个内层字典,按 inner_key 聚合所有 outer_key 对应的 value for inner_dict in data_dict.values(): for key, value in inner_dict.items(): temp_dict.setdefault(key, []).append(value) # 步骤 3:按需输出 CSV 格式(逗号分隔,无引号转义;如需严格 CSV,请用 csv 模块) for row_key, row_values in temp_dict.items(): print(row_key, *row_values, sep=",")
✅ 输出结果:
'',1,2,3 One,110,120,130 Two,210,220,230 three,310,320,330
⚠️ 注意事项:
立即学习“Python免费学习笔记(深入)”;
? 进阶提示: 若需保存为文件而非打印,只需将最后循环替换为:
with open("output.csv", "w", newline="") as f: writer = csv.writer(f) for row_key, row_values in temp_dict.items(): writer.writerow([row_key] + row_values)
此方案零依赖、逻辑清晰、易于调试,是处理中小规模字典转置任务的推荐实践。