python - 将字典列表转换为 CSV

标签 python csv dictionary

我正在尝试将此字典列表转换为 csv,首先我的数据包含在 Counter 字典中,但由于它就像一个字典,我认为它是同一回事在使用它时作为字典。所以这就是我所做的:

我的反字典看起来像这样:

 counterdict =  {1:Counter({u'a':1, u'b':1, u'c':3}),2:Counter({u'd':1, u'f':4, u'e':2})...}

我将它转换成这样的字典列表:

new_dict = [dict(d,Month=k) for k, d in counterdict.iteritems()]

得到:

new_dict = [{Month :1, u'a':1, u'b':1, u'c':3}, {Month : 2,u'd':1, u'f':4, u'e':2}...]

然后我想将 new_dict 数据转换为 csv :

out_path= "outfile.csv"
out_file = open(out_path, 'wb')
new_dict = [dict(d,Month=k) for k, d in counterdict.iteritems()]
writer = DictWriter(out_file, fieldnames=allFields, dialect='excel')
for row in new_dict:
    writer.writerow(row)
out_file.close()

但是我得到了错误:

Traceback (most recent call last):
 File "C:/wamp/www/metrics1/script/cgi/translate_parameters.py", line 333, in <module>
writer.writerow(row)
File "C:\Python27\lib\csv.py", line 148, in writerow
return self.writer.writerow(self._dict_to_list(rowdict))
 File "C:\Python27\lib\csv.py", line 141, in _dict_to_list
wrong_fields = [k for k in rowdict if k not in self.fieldnames]
TypeError: argument of type 'NoneType' is not iterable

请帮忙!!

编辑:

allFields 来自 counterdict 值,如下所示:

allFields = list(set().union(*counterdict.values()))

所以这给了我反驳的所有领域的列表。

最佳答案

您将 fieldnames 参数设置为 None;您需要确保 allFields 是一个有序的字符串序列。

说明问题的演示:

>>> from cStringIO import StringIO
>>> import csv
>>> w = csv.DictWriter(StringIO(), fieldnames=None)
>>> w.writerow({'foo':'bar'})
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/lib/python2.7/csv.py", line 148, in writerow
    return self.writer.writerow(self._dict_to_list(rowdict))
  File "/opt/lib/python2.7/csv.py", line 141, in _dict_to_list
    wrong_fields = [k for k in rowdict if k not in self.fieldnames]
TypeError: argument of type 'NoneType' is not iterable
>>> w = csv.DictWriter(StringIO(), fieldnames=['foo'])
>>> w.writerow({'foo':'bar'})

关于python - 将字典列表转换为 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22480889/

相关文章:

python - 使用 super() 缺少父类(super class)的参数

python - 遍历 csv/xlsx 文件 python 3 中的行和列

java - 从 map 中获取最高 n 个数字的最简洁方法?

python - 使用 web2py 查找在 Google 应用引擎中热链接的网站的域名

python - 在单个语句中在 python 中多次测试单个变量

java - 将值加载到 csv 文件时如何修改默认分隔符

Java修改 map 中的关键对象

java - 使用另一个对象及其哈希码从 HashMap 获取 key

Python 使用多个文件从类创建对象

csv - 使用 FileHelpers 处理报价