【发布时间】:2019-02-12 14:42:58
【问题描述】:
上下文
我希望导出一个字典,其中包含字典列表作为每个 key:value 对的值:
dict = {'key_1':
[{'key_a': foo_1, 'key_b': bar_1},
{'key_a': foo_2, 'key_b': bar_2}],
'key_2':
[{'key_c': foo_1, 'key_d': bar_1}],
{'key_c': foo_2, 'key_d': bar_2}]
...}
所需的输出将是一个 .csv 文件,其中包含第一个字典的键(key_1、key_2 等)作为第一个标题行,然后是嵌套字典的键(key_a、key_b 等) , 作为对应于其各自键的第二个标题行。
所需输出的示例如下所示,其中列表索引列引用存储在字典列表中每个相应索引处的字典中的数据:
╔════════════╦═══════════════╤═══════════════╗
║ ║ key_1 │ key_2 ║
║ List Index ╠═══════╤═══════╪═══════╤═══════╣
║ ║ key_a │ key_b │ key_c │ key_d ║
╠════════════╬═══════╪═══════╪═══════╪═══════╣
║ 0 ║ foo_1 │ bar_1 │ foo_1 │ bar_1 ║
╟────────────╫───────┼───────┼───────┼───────╢
║ 1 ║ foo_2 │ bar_2 │ foo_2 │ bar_2 ║
╟────────────╫───────┼───────┼───────┼───────╢
║ 2 ║ foo_3 │ bar_3 │ foo_3 │ bar_3 ║
╚════════════╩═══════╧═══════╧═══════╧═══════╝
平台: 树莓派 3b+、Python 3.6
代码
目前,我正在研究执行此操作的不同选项,因此没有任何接近工作的连贯代码。但是,按照优先顺序,我正在考虑以下几个选项:
使用 pandas 形成一个反映所需表性质的数组。然后直接将其写入 CSV。
-
从上述字典数据结构写入 CSV。
import csv field_names = dict.keys() header2 = {'%s' %dict.keys() : dict[key_1][0].keys()} with open('project_data.csv', 'a') as csvfile: writer = csv.DictWriter(csvfile, fieldnames=field_names) writer.writeheader() # Write header row containing the top field names writer.writerow(header2) #Write row containing the second field names显然,此代码需要进一步开发以使其按预期工作。
-
另一种我没有考虑过的方法?
问题
以这种格式写入 CSV 的最佳方法是什么?
【问题讨论】:
-
@anky_91 谢谢,这为使用 pandas 执行此操作提供了一个很好的过程。关于如何使用多个标题行执行此操作的任何想法?这才是真正让我难过的地方。
标签: python pandas csv dictionary data-structures