2014-11-06 100 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