简体   繁体   English

通过 python 将数据从字典写入 csv

[英]write data from dictionary to csv by python

I have a dictionary as below which has repeated item name, the difference is the value of each part name.我有一个字典如下,其中有重复的项目名称,不同之处在于每个部分名称的值。 i want to write those info to csv with expected result is:我想将这些信息写入 csv,预期结果是:

在此处输入图像描述

    import csv
dict={
    'test':['part_name','test1','test2','test3','part_name','test1','test2','test3'],
    'value':['partA','12','55','109','partB','14','54','106'],
    'lcl':['lcl','10','50','100','lcl','10','50','100'],
    'ucl':['ucl','18','60','115','ucl','18','60','115'],
}
tmp={}
for k,v1,v2,v3 in zip(dict["test"],dict["value"],dict["lcl"],dict["ucl"]):
    tmp.setdefault(k, []).append([v1,v2,v3])
print(tmp)
with open('table.csv','w') as f:
    writer_inline = csv.writer(f, delimiter=',', lineterminator=',')
    writer = csv.writer(f, delimiter=',', lineterminator='\n')
    writer.writerow(tmp.keys())
    writer.writerows(zip(*tmp.values()))

Try the below code to get your desired csv.试试下面的代码来获得你想要的 csv。 I would recommend not to use dict as name for your dictionary.我建议不要使用dict作为字典的名称。 I have changed it to d :我已将其更改为d

import csv
d = {
    'test':['part_name','test1','test2','test3','part_name','test1','test2','test3'],
    'value':['partA','12','55','109','partB','14','54','106'],
    'lcl':['lcl','10','50','100','lcl','10','50','100'],
    'ucl':['ucl','18','60','115','ucl','18','60','115'],
}

headers = d['test'][:len(set(d['test']))]
size = len(headers)
d.pop('test', None)

parts = []
for i in d:
    parts += [[d[i][j:(j+size)] for j in range(0, len(d['value']), size)]]

rows = []
for part in list(zip(*parts)):
    rows += part

with open('table.csv','w') as f:
    writer = csv.writer(f, delimiter=',', lineterminator='\n')
    writer.writerow(headers)
    writer.writerows(rows)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM