Python 将defaultdict(列表)写入文件
我以前问过一个问题 虽然我确实根据代码获得了所需的输出,但我很难将其作为表格写入文件中Python 将defaultdict(列表)写入文件,python,python-2.7,defaultdict,Python,Python 2.7,Defaultdict,我以前问过一个问题 虽然我确实根据代码获得了所需的输出,但我很难将其作为表格写入文件中 count pos _pos _neg 31022550 31022550 31022550 31022550 ID: 代码 我会这样做(python 2): 您需要一个双循环来迭代每个键的列表。我已经将列名存储在一个列表中,因此我可以重用它来构建列表中的行&对于标题也是如此(第一项没有标题,我只是将其留空) 现在看起来是这样的: count
count pos _pos _neg
31022550
31022550
31022550
31022550
ID:
代码
我会这样做(python 2):
您需要一个双循环来迭代每个键的列表。我已经将列名存储在一个列表中,因此我可以重用它来构建列表中的行&对于标题也是如此(第一项没有标题,我只是将其留空)
现在看起来是这样的:
count pos _pos _neg
31022550 0 20 0 0
31022550 2 20 2 0
31022550 0 20 0 0
(由于制表符不够宽,所以稍微有点移位,但不存在读回的问题)
Python 3用户必须更改:
with open('mycsvfile.csv', 'wb') as f:
借
及
借
请注意,writerow
双循环可以被传递到writerow
的单行、双循环、平面生成器替换,执行速度更快:
writer.writerows([k] + [v[key] for key in keys] for k, vl in ids.items() for v in vl)
你能在你的问题中提供
ids
的内容吗?@Jean Françoisfare更新了postSimplest:代替print'{}\t{}.format(key,row)
dowriter.writerow([key,row['count'],row['pos'],row['u pos'],row['u neg'])
为什么不使用csv.writer()
相反?@MartijnPieters DictWriter没有那么好:1)标题行与键不一致(id写为空字符串),2)没有写入所有dict数据,这在写入ValueError:dict包含字段名中没有的字段时会产生错误
您可以使用空字段名/键。您可以将DictWriter配置为忽略额外的键。extrasaction=“ignore”
yes很好。但是数据不在dict中。“id”是一个键,其余的在dict中。您需要重建自定义dict才能使用DictWriter。(还有标题问题)。这是不适用的,因为@MartijnPieters输入数据的组织方式只是添加一个额外的键,或者建议OP在构建时将额外的键放入风管:-)
count pos _pos _neg
31022550 0 20 0 0
31022550 2 20 2 0
31022550 0 20 0 0
with open('mycsvfile.csv', 'wb') as f:
with open('mycsvfile.csv', 'w',newline="") as f:
for k, vl in ids.iteritems():
for k, vl in ids.items(): # also works in python 2
writer.writerows([k] + [v[key] for key in keys] for k, vl in ids.items() for v in vl)