【问题标题】:Adjacency list from Python dict来自 Python dict 的邻接列表
【发布时间】:2014-11-06 11:58:56
【问题描述】:

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

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

【问题讨论】:

  • 如果你的deg_new dict 有整数作为值,那么你的values 变量是一个整数,所以for value in values 没有任何意义。
  • 如果你的,你能提供一个示例 csv 格式吗?
  • 您需要将for key, values in ... 替换为for key, value in ... 并删除第二个for 循环。
  • @Lucas,谢谢!我没有想得太直接
  • 你应该检查你的字典。可能有些值不是列表/元组,而是整数。

标签: python csv dictionary


【解决方案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 的所有键值对。

【讨论】:

    【解决方案2】:

    deg_new.items() 会从您的字典中为您提供键、值对

    例如

    key1, value1
    key2, value2
    ...
    

    您不必再尝试遍历这些值;您已经一次获得一个。

    所以你可以这样做:

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

    【讨论】:

      【解决方案3】:

      可能有些值不是列表/元组,而是整数。对于这些情况,您应该使用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')
      

      【讨论】:

      • OP 声明这些值是整数,而不是列表或元组。
      猜你喜欢
      • 1970-01-01
      • 2012-08-05
      • 1970-01-01
      • 2017-11-16
      • 2018-10-07
      • 1970-01-01
      • 1970-01-01
      • 2015-06-09
      • 2015-05-31
      相关资源
      最近更新 更多