来自Python dict的邻接列表

时间:2014-11-06 11:58:57

标签: python csv dictionary

我需要输出一个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

这是否意味着我必须转换整数值?

3 个答案:

答案 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')