Context
Я ищу экспорт словаря, который содержит список словарей в качестве значения каждого ключа: значения пары:
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 ║
╚════════════╩═══════╧═══════╧═══════╧═══════╝
Платформа: Raspberry Pi 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 в этом формате?