在python中读取/写出字典到csv文件

时间:2015-12-15 23:01:36

标签: python csv dictionary

python很新,csv文件的文档有点令人困惑。

我有一个如下所示的字典:

key1:(value1,value2)

key2:(value1,value2)

key3:(value1,value2) ....

我想将这些文件以每行包含密钥的格式写入csv文件,然后是两个值。

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

3 个答案:

答案 0 :(得分:14)

我强烈推荐Pandas

转换为Pandas DataFrame:

import pandas as pd

d = {
    'a': (1, 101),
    'b': (2, 202),
    'c': (3, 303)
}
df = pd.DataFrame.from_dict(d, orient="index")

创建CSV文件:

df.to_csv("data.csv")

将CSV文件作为DataFrame读取:

df = pd.read_csv("data.csv", index_col=0)

将DataFrame转换回原始字典格式:

d = df.to_dict("split")
d = dict(zip(d["index"], d["data"]))

编辑:既然您提到了在Excel中使用输出文件的目标,那么Pandas to_excel()read_excel()可能对您更有用,因为它们可以更好地保留转换之间的内容。 此外,您可能希望完全跳过Excel并使用standard Python scientific stack

答案 1 :(得分:4)

我会使用熊猫,它可以在一行中完成:

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)

答案 2 :(得分:4)

我没有找到足够的理由在这里使用Pandas来解决一个相对简单的问题。

OP注意,如果您只想将值存储到文件中以便将其读回,那么请使用JSON而不是CSV。应尽量减少导出为CSV,以便与非技术人员(可能是Excel用户)进行交互。

以下是我将其存储在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