Python中将特定结构字典列表写入CSV文件的实现方法
Python中将特定结构字典列表写入CSV文件的实现方法
嘿,我来帮你搞定这个把特殊结构的字典列表转成目标CSV格式的需求~ 先理清楚你的核心需求:每个字典里的names和ages是等长的列表,需要把每个名字单独拆成一行,同时关联对应的年龄、部门和办公地点,对吧?
首先先把你提供的原始数据整理好(方便直接测试):
details = [ {"names": ["ramu", "Ravi", "Naik"], "ages": [39, 40, 45], "department": "admin", "location": "Bangalore"}, {"names": ["Kiran", "Kumar", "Joseph"], "ages": [35, 26, 52], "department": "IT", "location": "Hyderabad"}, {"names": ["Rajesh", "Nakul"], "ages": [34, 40], "department": "Payroll", "location": "Chennai"}, {"names": ["Mukesh", "Kundan", "Kishore"], "ages": [27, 33, 37], "department": "IT", "location": "Bangalore"} ]
接下来是具体的实现代码,用Python内置的csv模块就能轻松搞定,不需要额外安装第三方库:
import csv # 定义输出的CSV文件名 output_file = "employee_details.csv" # 定义CSV表头,完全匹配你要的格式 headers = ["Name", "Age", "Department", "Location"] # 打开文件并写入数据,用with语句自动管理文件资源 with open(output_file, mode='w', newline='', encoding='utf-8') as file: writer = csv.writer(file) # 先写入表头行 writer.writerow(headers) # 遍历每个包含部门/地点信息的字典 for item in details: # 用zip把names和ages一一配对,确保每个名字对应正确的年龄 for name, age in zip(item["names"], item["ages"]): # 组装当前行的所有数据 row = [name, age, item["department"], item["location"]] # 写入一行到CSV writer.writerow(row) print(f"CSV文件 {output_file} 已成功生成!")
关键细节说明:
- 表头匹配:严格按照你要的
Name, Age, Department, Location顺序定义表头; - 避免空行问题:
newline=''参数是为了防止Windows系统下生成的CSV出现多余的空行; - 数据配对准确性:用
zip()函数把每个字典里的names和ages列表精准配对,确保名字和年龄不会错位; - 编码兼容性:指定
utf-8编码,能避免特殊字符乱码,跨Windows、Mac、Linux系统都能正常读取。
运行这段代码后,生成的CSV文件格式就和你示例里的完全一致啦~
备注:内容来源于stack exchange,提问作者Phalguna
相关产品推荐
相关产品推荐

