以简单和Pythonic方式将简单的dict写入csv文件?

时间:2018-02-20 16:01:58

标签: python csv dictionary

我想将一个简单的dict写入CSV,以便以后以Pythonic方式重用。

我在网上找到的方法对我来说似乎并不优雅和Pythonic,所以我正在寻找更好的解决方案。例如:

How do I write a Python dictionary to a csv file?

How to export dictionary as CSV using Python?

dic = {1:"a",
       2:"b",
       3:"c"}

输出:

1,a
2,b
3,c

4 个答案:

答案 0 :(得分:2)

你可以轻松地使用熊猫,

 import pandas as pd
 df=pd.DataFrame(sorted(dic.items()))
 df.to_csv("your_file.csv",index=False)

答案 1 :(得分:1)

Q&正如你所指的那样是不同的。他们假设密钥是所有数据的第一行/相同(因此建议使用DictWriter

在这里,您的字典被视为键/值对的列表,并且它没有被排序,因此如果顺序很重要,只需根据元素对其进行排序(因为它们是唯一的,因此仅考虑键)。

import csv

dic = {1:"a",
       2:"b",
       3:"c"}

with open("out.csv","w",newline="") as f:  # python 2: open("out.csv","wb")
    cw = csv.writer(f)  # default separator is ",", no need for more params
    cw.writerows(sorted(dic.items()))

这种方法非常快,因为你没有按键访问值(不需要),稳定(由于sort函数,输出每次都相同),并且由于csv.writerows而没有使用循环。如果订单无关紧要,请将最后一行替换为:

    cw.writerows(dic.items())

csv模块在​​写入时会自动将项目转换为字符串,因此当数据类型为整数时,这不是问题。

答案 2 :(得分:0)

试试这个:

  import csv
    dic = {1:"a",
           2:"b",
           3:"c"}
    with open('output.csv', 'wb') as f:
        writer = csv.writer(f)
        for key in dic:
            writer.writerow([key, dic[key]])

答案 3 :(得分:0)

也许是一种更加抒情的方式:

with open('dic.csv', 'wb') as csv_file:
    csv.writer(csv_file).writerows(dic.items())