用python读取/写出csv文件的字典

2024-09-21 00:49:12 发布

您现在位置:Python中文网/ 问答频道 /正文

对python来说很新,csv文件的文档有点混乱。

我有一本如下所示的词典:

key1: (value1, value2)

key2: (value1, value2)

key3: (value1, value2)
....

我想把这些写进一个csv文件,格式是每一行包含键,后面跟着两个值。

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


Tags: 文件csv文档格式中将词典key2key1
3条回答

对此我强烈推荐Pandas

转换为熊猫数据帧:

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文件作为数据帧读回:

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

将数据帧转换回原始字典格式:

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

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

因为问题很简单,我没有找到足够的好处来使用熊猫。

同样要注意的是,如果您想将值存储到一个文件中以便读回,只需使用JSON或Python的shelve模块。只有当我们需要与潜在的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 

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

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)

相关问题 更多 >

    热门问题