【问题标题】:Outputting a Python dictionary with values in an array to a CSV file.将包含数组中值的 Python 字典输出到 CSV 文件。
【发布时间】:2011-10-15 18:05:33
【问题描述】:

这里的第一个问题,请原谅我肯定会犯的各种错误。

我已经为此工作了一段时间,我承认自己被难住了 - 一般意义上的字典让我有点头疼,因为我的背景更多是统计方面的,其中数据具有非常明确的结构。我正在使用 Python 2.7,我遇到了以下问题: 在一些分析结束时,使用 NetworkX 包,我有两个我感兴趣的字典,我将它们称为 Able 和 Baker。

每个本质上都是网络节点名称和值的字典。所以像:

乔:7 凯特:9 迈克:3 -and- 乔:12 凯特:4 迈克:2

但是这个输出将离开 Python,虽然我可以很容易地将整个内容输出为两个单独的文件(并且一直到现在),但将它作为单个 CSV 文件输出会非常好, 格式如下:

乔,7 岁,12 岁
凯特,9 岁,4 岁
迈克,3 岁、2 岁

现在,我正在运行以下命令以将两个字典合并为一个字典:

output = dict((k, [Able[k], Baker.get(k)]) for k in Able)
output.update((k, [None, Baker[k]]) for k in Baker if k not in Able)

这让我接近了我想要的,即一本带有 Joe 的字典:[7, 12]。但老实说,我对如何让 CSV 编写器合作并将 [7,12] 输出为不同的实体(即 7,12)而不是作为数组的一部分感到困惑。我得到的最接近的是:

net_out = open('output.csv', 'w')
writer = csv.writer(net_out, dialect='excel')
for node, value in output.items():
    writer.writerow([node,value])
net_out.close()

这会输出一排乔,[7,12]。谁能指出我正确的方向?

【问题讨论】:

    标签: python dictionary export-to-csv


    【解决方案1】:

    替换 writer.writerow([node,value])writer.writerow([node]+value)

    【讨论】:

      【解决方案2】:

      您将一个包含名称的列表和一个包含两个数字的列表传递给writer.writerow。要获得您想要的,请将列表扁平化为仅包含名称和数字的列表。简单的方法:

      for node, value in output.items():
          writer.writerow([node] + value)
      

      【讨论】:

      • 完美的解决方案,你们俩。谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-28
      • 1970-01-01
      • 1970-01-01
      • 2018-11-06
      • 1970-01-01
      • 2021-04-02
      • 1970-01-01
      相关资源
      最近更新 更多