繁体   English   中英

从Python字典列表到CSV中选择某些键,值

[英]Selecting Certain Keys,Values From List of Python Dictionaries to CSV

将字典列表处理为更易消化的内容以写入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_example = [{'id':1,'stage':'stage1','key2':'value1'},{'id':1,'stage':'stage2','key2':'value2'}]

您可以使用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。 我仍然不确定这是否是非常有用的输出。 您可能首先要考虑重新组织如何存储数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM