我想为CSV写一个简单的dict,以便以pythonic的方式重复使用。
我在网上发现的方法对我来说似乎并不优雅,所以我正在寻找更好的解决方案。例如:
如何将Python字典写入CSV文件?
如何使用Python将字典作为CSV导出?
dic = {1:"a",
2:"b",
3:"c"}
输出:
1,a
2,b
3,c
Q&所指的Q&是不同的。他们假设键是所有数据的第一行/相同(因此使用DictWriter
的建议(
在这里,您的字典被视为键/值对的列表,并且不订购,因此,如果订单很重要,只需根据元素对其进行排序(仅考虑键,因为它们是唯一的(。
import csv
dic = {1:"a",
2:"b",
3:"c"}
with open("out.csv","w",newline="") as f: # python 2: open("out.csv","wb")
cw = csv.writer(f) # default separator is ",", no need for more params
cw.writerows(sorted(dic.items()))
这种方法非常快,因为您没有按键访问值(无需(,稳定(由于排序功能,每次输出相同(,并且由于csv.writerows
而没有循环。如果订单没关系,请替换最后一行:
cw.writerows(dic.items())
csv
编写时自动将项目转换为字符串,因此当数据类型在您的示例中是整数时,这不是问题。
您可以轻松地使用熊猫,
import pandas as pd
df=pd.DataFrame(sorted(dic.items()))
df.to_csv("your_file.csv",index=False)
尝试以下:
import csv
dic = {1:"a",
2:"b",
3:"c"}
with open('output.csv', 'wb') as f:
writer = csv.writer(f)
for key in dic:
writer.writerow([key, dic[key]])
也许是一种更多的pythonic方式:
with open('dic.csv', 'wb') as csv_file:
csv.writer(csv_file).writerows(dic.items())