2014-11-06 74 views
0

我需要輸出一個Python字典作爲鄰接表:兩列,一鍵,其他 - 值;像這樣:Python dict的鄰接表

Key1, Value1 
Key2, Value2 

我的字典包含字符串作爲鍵和整數作爲值。希望這些行會做的伎倆:

with open('Adjacency_list_indegrees.csv', 'wb') as ff: 
    ff.write('\n') 
    for key, values in deg_new.items(): 
     for value in values: 
      ff.write('{},{}'.format(key, value)) 
      ff.write('\n') 

不過,我得到一個錯誤

TypeError: 'int' object is not iterable 

這是否意味着我必須改變整數值?

+1

如果你的'deg_new'字典有int值作爲值,那麼你的'values'變量是一個int值,所以'對於value值'沒有任何意義。 – khelwood 2014-11-06 12:00:34

+0

你能否提供一個樣本csv格式? – 2014-11-06 12:00:41

+2

您需要將'for key,value in ...'替換爲'for key,value in ...',並刪除第二個for循環。 – 2014-11-06 12:01:17

回答

1

您試圖遍歷整數值而不是列表的值。你根本不需要這樣做;將您的列表簡化爲:

for key, value in deg_new.items(): 
    ff.write('{},{}\n'.format(key, value)) 

您似乎也在重塑車輪;有一個完成這個任務十分耐用csv module

import csv 

with open('Adjacency_list_indegrees.csv', 'wb') as ff: 
    writer = csv.writer(ff) 
    ff.writerows(deg_new.items()) 

這一氣呵成寫從deg_new所有鍵值對。

1

deg_new.items()會給你鍵值對從你的字典。

E.g.

key1, value1 
key2, value2 
... 

您不必然後嘗試並遍歷值;你一次只能得到一個。

所以,你可以這樣做:

for key, value in deg_new.items(): 
    ff.write('{},{}\n'.format(key, value)) 
0

可能有一些價值不在列表/元組,而都是整數。對於這些情況,您應該使用try .. except。嘗試下面的代碼:

with open('Adjacency_list_indegrees.csv', 'wb') as ff: 
    ff.write('\n') 
    for key, values in deg_new.items(): 
     try: 
      for value in values: 
       ff.write('{},{}'.format(key, value)) 
       ff.write('\n') 
     except: 
      ff.write('{},{}'.format(key, values)) 
      ff.write('\n') 
+0

OP指出這些值是整數,而不是列表或元組。 – 2014-11-06 13:50:08