Reading/Writing out a dictionary to csv file in python

荒凉一梦 提交于 2019-12-04 19:27:06

问题


Pretty new to python, and the documentation for csv files are a bit confusing.

I have a dictionary that looks like the following:

key1: (value1, value2)

key2: (value1, value2)

key3: (value1, value2) ....

I would like to write these out to a csv file in the format where each line contains the key, followed by the two values.

I would also like to be able to read them back into a dictionary from the file at a later date.


回答1:


I didn't find enough benefit to use Pandas here since the problem is simple.

Also note to OP, if you want to store values to a file just for reading it back simply use JSON or Python's shelve module. Exporting to CSV should be minimised only when we need to interact potentially Excel users.

The below code converts a dict into 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)

This code explains what happens inside the list comprehension.

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



回答2:


I highly recommend Pandas for this.

Convert to Pandas DataFrame:

import pandas as pd

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

Create a CSV file:

df.to_csv("data.csv")

Read the CSV file back as a DataFrame:

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

Convert the DataFrame back to the original dictionary format:

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

EDIT: Since you mention that your goal to use the output file in Excel, Pandas to_excel() and read_excel() might be more useful to you since they better-preserve the content between conversions. Also, you might want skip Excel altogether and use the standard Python scientific stack.




回答3:


I would use pandas, it can be done in one line:

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)


来源:https://stackoverflow.com/questions/34301088/reading-writing-out-a-dictionary-to-csv-file-in-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!