我正在尝试根据字典值将数据写入CSV列。 例如,我有一个for循环,它将在每个循环中生成一个字典
{JLKJ: 1}
{BNMM: 4}
{HUGF: 5}...
我的目标是尝试根据键值将新值附加到相应的列,如果列不存在,则必须添加列并附加其值。 例如,像新键一样,让我们说
{GRAR:2}
{GLPO:2}
{JLKJ:3}
我知道CSV模块在这些任务方面表现不佳。任何建议都会非常有用。
感谢。
答案 0 :(得分:0)
我发现这个设计有点刺耳。是否有一个特定的原因,你只使用一个字符串?你可以做的是保留一个字典,其中每个值都是该特定键的元素列表。所以你的代码看起来像这样:
from collections import defaultdict
dic = defaultdict(list)
for......
dic['XYZ'].append(val) #At the end of your for loop dic = {ABCD: [1,2,3,4], EFGH: [5,6,2,4,8]....}
rows = dic.values()
rows = zip(*rows) #Both CSV and zip don't support variable length lines, so make all arrays of equal length by padding zeroes to the end before this line
with open('filename.csv','wb') as fp:
fieldnames = dic.keys()
writer = csv.writer(fp)
writer.writerow(fieldnames)
writer.writerows(rows)