python - 将具有不同键的字典写入 CSV 文件
问题描述
我有一些字典:
d1 = {'name':'jon','age':4}
d2 = {'name':'joe','age':34,'height':100}
我还有其他未在此处列出的字典,它们有一些不同的键,但它们有一些与d1
and相同的键d2
。
import csv
with open('file.csv', 'a') as f:
wr = csv.writer(f)
wr.writerow(d1.values())
wr.writerow(d2.values())
当然,这不会将数据放在正确的列中。它也不需要标题。我该如何设置,以便每个字典中的每个键都成为标题,并且在将信息写入 CSV 时将值放在正确的位置?
解决方案
尝试使用csv.DictWriter(f, fieldnames=csv_columns)
而不是csv.writer(f)
查看此处的文档。至于csv_columns
如果您事先不知道所有列名,您可以遍历所有字典找到唯一的并将它们添加到列表中。
我在下面写了一个例子。
import csv
d1 = {'name':'jon', 'age':4}
d2 = {'name':'joe', 'age':34, 'height':100}
csv_columns = ['name', 'age', 'height']
with open('file.csv', 'a') as f:
wr = csv.DictWriter(f, fieldnames=csv_columns)
wr.writeheader()
wr.writerow(d1)
wr.writerow(d2)
推荐阅读
- android - 连接到 Firebase 失败
- javascript - 使用 vue.js 将 API 数据保存到数组中
- reporting-services - 远程链接服务器上的 SSRS 查询
- mysql - MYSQL HAVING (not) with ROW_NUMBER() 为什么它返回不同的行数
- curve-fitting - 模拟数据的曲线拟合不起作用
- jenkins - 神器收集问题
- qt - 为什么 QT GUI 对流程图性能的影响如此之大?
- amazon-web-services - 何时应该使用自动缩放以及何时使用 SQS?
- javascript - treeshake后如何在webpack中获取包中的文件列表
- python - Guido van Rossum 在哪里以及在什么情况下说“如果你希望你的代码运行得更快,你应该只使用 PyPy。”?