将包含数组值的Python字典输出到CSV文件。

时间:2011-07-29 07:49:50

标签: python dictionary export-to-csv

这里的第一个问题,请原谅我肯定会犯的各种错误。

我一直在研究这个问题,我承认自己被困了 - 一般意义上的词典会让我的头受到一点伤害,因为我的背景更多的是在统计方面,数据具有非常明确的结构。我正在使用Python 2.7,我遇到了以下问题:在一些分析的最后,使用NetworkX包,我有两个我感兴趣的词典,我称之为Able和Baker。

每个本质上都是网络节点名称和值的字典。如下所示:

Joe:7 Kate:9 Mike:3和Joe:12 Kate:4 Mike:2

但是这个输出将离开Python,虽然我可以很容易地输出整个东西作为两个单独的文件(并且一直到现在为止),将它作为单个CSV文件出来真的很不错,格式如下:

乔,7岁,12岁 凯特,9,4 迈克,3岁,2岁

现在,我正在运行以下内容,将两个词典合并为一个词典:

output = dict((k, [Able[k], Baker.get(k)]) for k in Able)
output.update((k, [None, Baker[k]]) for k in Baker if k not in Able)

这让我接近我想要的东西,即乔的字典:[7,12]。但老实说,如何让CSV编写器合作并输出[7,12]作为不同的实体(即7,12)而不是作为数组的一部分。我得到的最接近的是:

net_out = open('output.csv', 'w')
writer = csv.writer(net_out, dialect='excel')
for node, value in output.items():
    writer.writerow([node,value])
net_out.close()

其中列出了Joe的行,[7,12]。有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:2)

替换 writer.writerow([node,value])writer.writerow([node]+value)

答案 1 :(得分:1)

您将包含姓名的列表和包含两个数字的列表传递给writer.writerow。要获得所需内容,请将列表展平为名称和数字列表。简单的方法:

for node, value in output.items():
    writer.writerow([node] + value)