回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我试图将这个dict列表转换成csv,首先我的数据包含在<code>Counter</code>字典中,但是由于它类似于dict,所以我认为在使用它时它与dict是一样的。所以我就是这么做的:</p>
<p>我的反诘词是这样的:</p>
<pre><code> counterdict = {1:Counter({u'a':1, u'b':1, u'c':3}),2:Counter({u'd':1, u'f':4, u'e':2})...}
</code></pre>
<p>我把它转换成这样的一个dicts列表:</p>
^{pr2}$
<p>获得:</p>
<pre><code>new_dict = [{Month :1, u'a':1, u'b':1, u'c':3}, {Month : 2,u'd':1, u'f':4, u'e':2}...]
</code></pre>
<p>然后我要将新的数据转换为csv:</p>
<pre><code>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()
</code></pre>
<p>但我得到了一个错误:</p>
<pre><code>Traceback (most recent call last):
File "C:/wamp/www/metrics1/script/cgi/translate_parameters.py", line 333, in &lt;module&gt;
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
</code></pre>
<p>救命啊!!在</p>
<p>编辑:</p>
<p><code>allFields</code>来自<code>counterdict</code>值,如下所示:</p>
<pre><code>allFields = list(set().union(*counterdict.values()))
</code></pre>
<p>所以这给了我一个反口述所有字段的列表。在</p>