Я новичок в Python и пробовал все, что мог придумать, и не мог найти решение этого. У меня есть список, который содержит в качестве последнего из своих элементов один словарь с различным количеством ключей, который выглядит.Как написать список с вложенным словарем в файл csv?
l = [('Apple', 1, 2, {'gala': (2, 1.0)}),
('Grape ', 2, 4, {'malbec': (4, 0.25), 'merlot': (4, 0.75)}),
('Pear', 4, 5, {'anjou': (5, 0.2), 'bartlet': (5, 0.4), 'seckel': (5, 0.2)}),
('Berry', 5, 5, {'blueberry': (5, 0.2), 'blackberry': (5, 0.2), 'straw': (5, 0.2)})]
Когда я пытаюсь написать CSV-файл из текущего списка, я использовал:
test_file =()
length = len(l[0])
with open('test1.csv', 'w', encoding = 'utf-8') as test_file:
csv_writer = csv.writer(test_file, delimiter=',')
for y in range(length):
csv_writer.writerow([x[y] for x in l])
Это делает последний элемент в списке, словарь, чтобы быть только одна строка в выходной файл:
Apple 1 2 {'gala': (2, 1.0)}
Grape 2 4 {'malbec': (4, 0.25), 'merlot': (4, 0.75)}
Pear 4 5 {'anjou': (5, 0.2), 'bartlet': (5, 0.4), 'seckel': (5, 0.2), 'bosc': (5, 0.2)}
Berry 5 5 {'blueberry': (5, 0.2), 'blackberry': (5, 0.2), 'straw': (5, 0.2)}
Это делает невозможным выполнение любых операций со значениями внутри последнего элемента.
Я попытался сгладить вложенный словарь, чтобы получить простой список, но результат не сохраняет отношения между элементами. Что мне нужно, чтобы разделить словарь и иметь выход, который будет выглядеть примерно так:
Apple 1 2 gala 2 1.0
Grape 2 4 malbec 4 0.25
merlot 4 0.75
Pear 4 5 anjou 5 0.2
bartlet 5 0.4
seckel 5 0.2
bosc 5 0.2
Berry 5 5 blueberry 5 0.2
blackberry 5 0.2
straw 5 0.2
Я имею в виду нечто вроде этого, потому что я не совершала в этот формат, но к идее о том, что иерархическое отношение словарь не будет потерян в выходном файле. Есть ли способ сделать это? Я действительно новичок в python и ценю любую помощь. Благодаря!
Вы смешивание яблок и апельсинов здесь.Существуют способы представления дерева в плоском формате, таком как csv, но если у вас нет веских оснований придерживаться csv, вы должны сохранить его в формате, который позволяет вам сохранять dicts. Файл JSON может быть вариантом. –