【发布时间】:2021-07-23 19:39:45
【问题描述】:
我在 Python 中有一个包含多个嵌套字典的字典,我想将它们写入一个 csv 文件。
字典看起来像这样:
dict = {'case1':{'variant1':{'Name':['1','2','3'],'Values':[1,2,3],'Unit':['one','two','three']}},
'variant2':{'Name':['1','2','3'],'Values':[1,2,3],'Unit':['one','two','three']},
'case2':{'variant1':{'Name':['1','2','3'],'Values':[1,2,3],'Unit':['one','two','three']}},
'variant2':{'Name':['1','2','3'],'Values':[1,2,3],'Unit':['one','two','three']}}
因此,具有不同变体的多个案例,每个变体包含三个对应名称、值和单位的列表。 如前所述,我想将此 dict 转换为 csv 文件,理想情况下,不同情况下的变体很容易区分。由于 csv 将主要在 Excel 中使用,我将举例说明我想象它在 Excel 中的外观。理想是这样的: test_dict2csv
我知道如何将单个变体(即一组名称、值和单位)写入 csv,其代码如下所示:
keys = sorted(dict['case1']['variant1'].keys())
with open("test_output.csv", "w") as outfile:
writer = csv.writer(outfile,delimiter=';')
writer.writerow(keys)
writer.writerows(zip(*[dict['case1']['variant1'][key] for key in keys]))
但我不知道如何在同一行向下添加下一个变体和案例。
如果有人有想法,我将非常感激:)
【问题讨论】:
-
在您提供的示例输出中,您有带有
12字段的3记录,因为每个列表都有 3 个元素。这是您可以对所有数据做出的假设(所有列表将具有相同数量的元素)吗?请注意,您的示例字典有两次密钥variant2,这将如何处理?另外请不要使用dict作为变量名,因为它是一个python关键字,所以在你的sn-p代码中它是一个变量,但读起来很奇怪,因为人们期望dict意味着和做某事否则。
标签: python csv dictionary nested