用简单而pythonic的方式将简单的命令写入CSV文件



我想为CSV写一个简单的dict,以便以pythonic的方式重复使用。

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

如何将Python字典写入CSV文件?

如何使用Python将字典作为CSV导出?

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

输出:

1,a
2,b
3,c

Q&所指的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()))

这种方法非常快,因为您没有按键访问值(无需(,稳定(由于排序功能,每次输出相同(,并且由于csv.writerows而没有循环。如果订单没关系,请替换最后一行:

    cw.writerows(dic.items())

csv编写时自动将项目转换为字符串,因此当数据类型在您的示例中是整数时,这不是问题。

您可以轻松地使用熊猫,

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

尝试以下:

  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]])

也许是一种更多的pythonic方式:

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

最新更新