我是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文件时,我使用了:
^{pr2}$它使列表中的最后一个元素dictionary在输出文件中仅为一个字符串:
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中,dict中的每一项都有一行,下面将展示如何编写和读取它。如果您有大量的数据,这不是高效的,也不是最佳的,因为它在每一行重复数据,但是它可以很好地压缩。在
如果您坚持使用CSV/TSV,您应该记住它是表的一种表示,但是您希望它看起来像一个结构化文件(XML/JSON/YAML)。我建议使用CSV/TSV将数据存储为关系表,否则您可能会遇到一些混乱的输出。在您的情况下,选择for的选项将输出如下:
标题:
数据:
^{pr2}$看起来你很亲密。有几点——您不需要初始化
test_file
,您可以将length
放入迭代器中。在如果我写这个到csv,我可能会用
当然,如果这是一个大列表,或者如果您非常关注重复信息,您可以进行一些优化。在
相关问题 更多 >
编程相关推荐