【问题标题】:How do I write this dictionary of lists to a csv file in this format如何以这种格式将此列表字典写入 csv 文件
【发布时间】:2019-03-13 21:23:36
【问题描述】:

我想使用 csv 将此列表字典写入此格式的 csv 文件:

Ola, elizabethy, beale/cambray,st_hildas
Evie, st_hildas,beale/cambray,elizabethn
Lorna,   beale/cambray,elizabethn,st_hildas

这样我最终可以将其写入一个如下所示的 excel 文件:

Ola     elizabethy      beale/cambray    st_hildas
Evie    st_hildas       beale/cambray    elizabethn
Lorna   beale/cambray   elizabethn       st_hildas

这就是它在 python 中的样子。

students = {"Ola":["elizabethy","beale/cambray","st_hildas"],"Evie":["st_hildas","beale/cambray","elizabethn"],"Lorna":["beale/cambray","elizabethn","st_hildas"],"Morgan":["st_hildas","beale/cambray","elizabethy"],"Ola1":["beale/cambray","elizabethn","st_hildas"],"Lorna1":["elizabethn","beale/cambray","st_hildas"],"Lorna2":["beale/cambray","elizabethn","st_hildas"],"Evie1":["st_hildas","beale/cambray","elizabethy"],"Evie3":["st_hildas","beale/cambray","elizabethn"]}

【问题讨论】:

  • 你的尝试是什么?哪里出错了?

标签: python python-3.x csv dictionary


【解决方案1】:
import pandas as pd
d = {"Ola":["elizabethy","beale/cambray","st_hildas"],"Evie":["st_hildas","beale/cambray","elizabethn"],"Lorna":["beale/cambray","elizabethn","st_hildas"],"Morgan":["st_hildas","beale/cambray","elizabethy"],"Ola1":["beale/cambray","elizabethn","st_hildas"],"Lorna1":["elizabethn","beale/cambray","st_hildas"],"Lorna2":["beale/cambray","elizabethn","st_hildas"],"Evie1":["st_hildas","beale/cambray","elizabethy"],"Evie3":["st_hildas","beale/cambray","elizabethn"]}

df = pd.DataFrame.from_dict(d)
df.T.to_csv("test.csv")

【讨论】:

  • 谢谢你这也有效,但在开始时给了我:“0,1,2”
  • @casualcoder 使用df.T.to_csv("test.csv", header=False) 来避开标头 (0,1,2)
【解决方案2】:
import csv
students = {"Ola":["elizabethy","beale/cambray","st_hildas"],"Evie":["st_hildas","beale/cambray","elizabethn"],"Lorna":["beale/cambray","elizabethn","st_hildas"],"Morgan":["st_hildas","beale/cambray","elizabethy"],"Ola1":["beale/cambray","elizabethn","st_hildas"],"Lorna1":["elizabethn","beale/cambray","st_hildas"],"Lorna2":["beale/cambray","elizabethn","st_hildas"],"Evie1":["st_hildas","beale/cambray","elizabethy"],"Evie3":["st_hildas","beale/cambray","elizabethn"]}
mylist=[[k]+v for k,v in students.items()]
with open("mylist.csv", 'w', newline='') as myfile:
     wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
     wr.writerows(mylist)

【讨论】:

    【解决方案3】:

    写入 CSV(不导入任何库)

    students = {
        "Ola":["elizabethy","beale/cambray","st_hildas"],
        "Evie":["st_hildas","beale/cambray","elizabethn"],
        "Lorna":["beale/cambray","elizabethn","st_hildas"],
        "Morgan":["st_hildas","beale/cambray","elizabethy"],
        "Ola1":["beale/cambray","elizabethn","st_hildas"],
        "Lorna1":["elizabethn","beale/cambray","st_hildas"],
        "Lorna2":["beale/cambray","elizabethn","st_hildas"],
        "Evie1":["st_hildas","beale/cambray","elizabethy"],
        "Evie3":["st_hildas","beale/cambray","elizabethn"]}
    
    with open('test.csv', 'w') as f:
        for key in students.keys():
            f.write("%s, %s\n"%(key,','.join(students[key])))
    

    要将 CSV 读回字典:

    students1 = dict()
    with open('test.csv', 'r') as f:
        for line in f:
           key, value = line.strip().split(', ')
           students1[key] = value.split(',')
    

    【讨论】:

    • 更新了答案。谢谢!
    • @RenukaDeshmukh 我如何将 csv 文件以与它留下的相同格式读回字典中?
    猜你喜欢
    • 1970-01-01
    • 2016-10-26
    • 2014-06-30
    • 2015-10-04
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 2014-06-17
    相关资源
    最近更新 更多