我需要输出一个Python字典作为邻接列表:两列,一列,其他 - 值;像这样:
Key1, Value1
Key2, Value2
我的dict包含字符串作为键,整数包含值。希望这些线路可以解决问题:
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
这是否意味着我必须转换整数值?
答案 0 :(得分: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 :(得分:1)
deg_new.items()
会从您的字典中为您提供键值对。
E.g。
key1, value1
key2, value2
...
您不必再尝试迭代这些值;你已经一次给他们一个。
所以你可以这样做:
for key, value in deg_new.items():
ff.write('{},{}\n'.format(key, value))
答案 2 :(得分: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')