根据字典值将单元格中的数据写入csv文件

时间:2017-12-14 23:06:25

标签: python csv dictionary

我正在尝试根据字典值将数据写入CSV列。 例如,我有一个for循环,它将在每个循环中生成一个字典

{JLKJ: 1}
{BNMM: 4}
{HUGF: 5}...

example

我的目标是尝试根据键值将新值附加到相应的列,如果列不存在,则必须添加列并附加其值。 例如,像新键一样,让我们​​说

{GRAR:2} 
{GLPO:2}
{JLKJ:3}

example2

我知道CSV模块在这些任务方面表现不佳。任何建议都会非常有用。

感谢。

1 个答案:

答案 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)