在python中将字典读/写为csv文件

在python中将字典读/写为csv文件,python,csv,dictionary,Python,Csv,Dictionary,python还很新,csv文件的文档有点混乱 我有一本字典,如下所示: key1: (value1, value2) key2: (value1, value2) key3: (value1, value2) .... 我想将它们写入csv文件,格式为每行包含键,后跟两个值 我还希望以后能够将它们从文件中读回字典。我强烈建议这样做 转换为数据帧: 将熊猫作为pd导入 d={ "a":(1101), "b":(2202), ‘c’:(3303) } df=pd.DataFrame.from_

python还很新,csv文件的文档有点混乱

我有一本字典,如下所示:

key1: (value1, value2)

key2: (value1, value2)

key3: (value1, value2)
....
我想将它们写入csv文件,格式为每行包含键,后跟两个值

我还希望以后能够将它们从文件中读回字典。

我强烈建议这样做

转换为数据帧:

将熊猫作为pd导入
d={
"a":(1101),
"b":(2202),
‘c’:(3303)
}
df=pd.DataFrame.from_dict(d,orient=“index”)
创建CSV文件:

df.to_csv(“data.csv”)
将CSV文件作为数据帧读回:

df=pd.read\u csv(“data.csv”,index\u col=0)
将数据帧转换回原始字典格式:

d=df.to_dict(“拆分”)
d=dict(zip(d[“索引”]、d[“数据”]))
编辑:因为您提到您的目标是在Excel中使用输出文件,所以它们可能对您更有用,因为它们可以更好地保留转换之间的内容。
此外,您可能希望完全跳过Excel并使用。

我将使用pandas,它可以在一行中完成:

import pandas as pd

dic = {'key1':['v1','v2'], 'key2':['vv','gg']}

pd.DataFrame(dic).T.reset_index().to_csv('myfile.csv', header=False, index=False)

因为问题很简单,我没有发现在这里使用熊猫有足够的好处

同样要注意的是,如果您只想将值存储到一个文件中以便读回,只需使用JSON或Python的搁置模块即可。只有当我们需要与潜在的Excel用户交互时,才应尽量减少导出到CSV

下面的代码将dict转换为CSV

value1 = 'one'
value2 = 'two'
d = { 
        'key1': (value1, value2), 
        'key2': (value1, value2), 
        'key3': (value1, value2)
    }
CSV ="\n".join([k+','+','.join(v) for k,v in d.items()]) 
#You can store this CSV string variable to file as below
# with open("filename.csv", "w") as file:
    # file.write(CSV)
这段代码解释了列表中发生的事情

CSV = ""
for k,v in d.items():
    line = "{},{}\n".format(k, ",".join(v))
    CSV+=line
print CSV 

读这篇文章,试着自己解决它,来这里(如果你有困难)问一些具体的问题。为什么是CSV?如果要保存和加载,可以查看
pickle
json
之类的内容。两者都有非常可靠的转储和加载方法,
json
exputt是用户可读的。但将在多个文件中使用,以便我可以保持运行总数。提供一些代码,然后提供一个示例,说明您希望输出的外观。我想我能看到,但不完全确定。此外,如前所述,这可能不适合csv模块。在不了解大量数据的情况下,你的结构对于阅读和写作来说都不是一个真正自然的结构。因此,如果不进行操作,您将无法将其读回字典。我们使用csv.DictWriter和csv.DictReader,但我们也必须确保我们的数据结构为字典列表,键是cheadings,值是单元格内容a)是
value1、value2
数字或字符串,在这种情况下,当您说要输出
键:value1、value2
,它们可能需要被引用(这样内部逗号就不会被曲解)并且可能会被转义(这样内部换行就不会被曲解)b)当你说你想把它写出来,这样它就可以作为dict读回,你是说as
key,value1,value2,这样代码就必须知道它是为dict准备的,或者说是标准格式的dict,比如
键:value1,value2
,比如
pandas.to_csv
会写吗?使用pandas的好方法是_csv,不需要open命令,参见我的答案。我不想听起来很挑剔,但有人知道如何使用裸python吗?作为python的初学者,我真的不想使用其他软件包。如果您想在依赖性方面寻找更简单的东西,那么itsneo的答案可能就是你想要的。我更喜欢这个答案,而不是选择的答案。使用
index=False
可能对大多数用户有用。这看起来更像是我能理解的东西。那么,在您编写了“for k,v in d.items()”的地方,v参数(假设label为value)是否会自动拾取其中有2个值(一个元组)?i、 是否打印此键,值1,值2?是的,假定元组为
v
,“。join
表示用逗号连接这些元组变量。我用for循环详细阐述了列表理解。希望这将更容易和更可读。