2011-07-29 43 views
1

這裏的第一個問題,請原諒我一定會犯的各種各樣的錯誤。使用數組中的值將Python字典輸出到CSV文件。

我一直在努力研究這個問題,我承認會被難住 - 一般意義上的字典會讓我頭痛一點,因爲我的背景更多的是統計方面,數據有相當明確的結構。我在Python 2.7中工作,並且遇到了以下問題:在一些分析結束時,使用NetworkX包,我有兩個我感興趣的字典,我將其稱爲Able和Baker。

每一個本質上是一個網絡節點的名稱和價值的字典。因此,像:

喬:7凱特:9邁克:3 - 和 - 喬:12凱特:4邁克:2

但這輸出要離開的Python,雖然我可以輸出整個事情作爲兩個獨立的文件很容易(並且已經到現在爲止),這將是非常不錯的,它出來作爲一個CSV文件,格式如下所示:

喬,7,12
凱特,9, 4
Mike,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() 

其中放出喬的行,[7,12]。任何人都能指出我正確的方向?

回答

1

你傳遞包含名稱和兩個數字writer.writerow列表清單。爲了得到你想要的東西,將列表平坦化爲名稱和數字的列表。簡單的方法:

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

完美的解決方案,你們倆。謝謝! – Fomite

2

更換 writer.writerow([node,value])writer.writerow([node]+value)