我有一个问题,即将字典列表操作为更易于理解的内容,以便写入csv。例如,我有一个像这样的词典列表:
dict_example = [{'id':1,'key1':'value1','key2':'value2'},{'id':1,'key1':'value3','key2':'value4'}]
理想情况下,我想要一个csv,这将是:
id,key1,key2,key1,key2
1,value1,value2,value3,value4
基本上,我想找出最简单的方法。我正在使用的这个列表要大得多。另外,对于每个'id',有4个字典代表不同的值,我希望每个'id'都在一行中。
有什么想法?我可以想办法通过将值提取到其他形式来实现这一点,但不要将它们留在字典中然后将其写入CSV。
编辑:
我现在需要弄清楚哪种数据格式最有用。对于每个'id',存在不同的'阶段',其中'key1'和'key2'的值是不同的。该ID是持久的。
什么是有用的dict来存储它?
现在存在的示例,更清晰:
dict = dict_example = [{'id':1,'stage':'stage1','key2':'value1'},{'id':1,'stage':'stage2','key2':'value2'}]
答案 0 :(得分:0)
您可以使用itertools.groupby按特定条件进行分组 - 在您的情况下,'id'
:
import itertools
d = [{'id':1,'key1':'value1','key2':'value2'},{'id':1,'key1':'value3','key2':'value4'}, \
{'id':1,'key4':'value5'}, {'id':2,'key1':'value3','key2':'value4'}]
for id, group in itertools.groupby(d, lambda x : x['id']):
key_line = 'id'
values_line = str(id)
for g in group:
for key in sorted(g.keys()):
if key == 'id':
continue
key_line += ',{0}'.format(key)
values_line += ',{0}'.format(g[key])
print key_line
print values_line
这将输出
id,key1,key2,key1,key2,key4
1,value1,value2,value3,value4,value5
id,key1,key2
2,value3,value4
...等
表示词典中的每个ID。我仍然不确定它是否是一个非常有用的输出。您可能需要考虑重新组织首先存储数据的方式。