我想将一个简单的dict写入CSV,以便以后以Pythonic方式重用。
我在网上找到的方法对我来说似乎并不优雅和Pythonic,所以我正在寻找更好的解决方案。例如:
How do I write a Python dictionary to a csv file?
How to export dictionary as CSV using Python?
dic = {1:"a",
2:"b",
3:"c"}
输出:
1,a
2,b
3,c
答案 0 :(得分:2)
你可以轻松地使用熊猫,
import pandas as pd
df=pd.DataFrame(sorted(dic.items()))
df.to_csv("your_file.csv",index=False)
答案 1 :(得分:1)
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()))
这种方法非常快,因为你没有按键访问值(不需要),稳定(由于sort函数,输出每次都相同),并且由于csv.writerows
而没有使用循环。如果订单无关紧要,请将最后一行替换为:
cw.writerows(dic.items())
csv
模块在写入时会自动将项目转换为字符串,因此当数据类型为整数时,这不是问题。
答案 2 :(得分:0)
试试这个:
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]])
答案 3 :(得分:0)
也许是一种更加抒情的方式:
with open('dic.csv', 'wb') as csv_file:
csv.writer(csv_file).writerows(dic.items())