Python3如何将嵌套字典写入带表头的CSV文件?
嵌套字典转带表头CSV的实现方法
直接用Python内置的csv模块就能处理这种嵌套结构,以下是完整代码和步骤说明:
完整代码示例
import csv headers = ['Location', 'Agent', 'Sales', 'Renewals', 'Leaves'] data = {'Location1': {'Bob': {'Sales': 2, 'Renewals': 1, 'Leaves': 1}, 'Jim': {'Sales': 1, 'Renewals': 2, 'Leaves': 3}}, 'Location, 2': {'Tod': {'Sales': 1, 'Renewals': 3, 'Leaves': 1}, 'Joe': {'Sales': 3, 'Renewals': 4, 'Leaves': 2}}, 'Location 3': {'Bill': {'Sales': 1, 'Renewals': 4, 'Leaves': 5}} } # 打开文件并写入CSV with open('sales_report.csv', 'w', newline='', encoding='utf-8') as csv_file: # 初始化DictWriter,指定表头字段 csv_writer = csv.DictWriter(csv_file, fieldnames=headers) # 写入表头行 csv_writer.writeheader() # 遍历嵌套字典生成每行数据 for location, agent_data in data.items(): for agent, metrics in agent_data.items(): # 构造符合表头的行字典 row = { 'Location': location.replace(', ', ''), # 可选:清理Location名称格式 'Agent': agent, **metrics # 展开销售数据字段 } # 写入单行数据 csv_writer.writerow(row)
关键说明
csv.DictWriter:专门用于按表头字段匹配字典键的写入工具,完美适配这种需要映射字段的场景。- 字典展开
**metrics**:无需逐个手动赋值Sales、Renewals、Leaves,直接展开嵌套字典的键值对,简化代码。 - 文件处理:
with语句自动管理文件打开/关闭,避免资源泄漏;newline=''防止CSV中出现多余空行。 - 可选格式调整:如果需要将
Location, 2转为Location2,保留replace(', ', '')即可,不需要则直接用location。
运行代码后,生成的CSV内容与你期望的格式完全一致。
内容的提问来源于stack exchange,提问作者NTWGray
相关产品推荐
相关产品推荐

