1

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

我已经为此工作了一段时间,我承认自己被难住了——一般意义上的字典让我有点头疼,因为我的背景更多地是在统计方面,其中数据具有非常明确的结构。我正在使用 Python 2.7,并且遇到以下问题: 在一些分析结束时,使用 NetworkX 包,我有两个我感兴趣的字典,我将它们称为 Able 和 Baker。

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

乔:7 凯特:9 迈克:3 和 - 乔:12 凯特:4 迈克: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)

这让我接近了我想要的,即一本带有 Joe 的字典:[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()

这让乔排成一排,[7,12]。谁能指出我正确的方向?

4

2 回答 2

2

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

于 2011-07-29T08:02:56.453 回答
1

您将一个包含名称的列表和一个包含两个数字的列表传递给writer.writerow. 要获得您想要的,请将列表扁平化为仅包含名称和数字的列表。简单的方法:

for node, value in output.items():
    writer.writerow([node] + value)
于 2011-07-29T08:03:09.050 回答