我是 Python 新手,尝试了所有我能想到的方法,但找不到解决方案。我有一个列表,其中包含一个字典作为其最后一项,具有不同数量的键,看起来像。
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真的很陌生,感谢任何帮助。谢谢!