首页 文章

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

提问于
浏览
5

对python来说很新,而且csv文件的文档有点令人困惑 .

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

key1:(value1,value2)

key2:(value1,value2)

key3:(value1,value2)....

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

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

3 回答

  • 3

    我会用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)
    
  • 12

    我没有找到足够的理由在这里使用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
    
  • 3

    我强烈推荐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 .

相关问题