重命名dicts列表中的键

时间:2017-02-27 12:04:29

标签: python dictionary

我有一个dicts列表:

[{"id" : "2016_a",
"data_1" : 106,
"data_2" : 200},
{"id" : "2015_a",
"data_1" : 110,
"data_2" : 105}
]

我希望获取id记录,并使用它创建一个唯一的唯一的词典列表,以便:

[{"data_1_2016_a" : 106,
"data_1_2015_a" : 110,
"data_2_2016_a" : 200,
"data_2_2015_a" : : 105}]

如何将字符串id附加到其他记录的key值?

2 个答案:

答案 0 :(得分:4)

循环并分配很简单。

 result = {}
 for elem in data:
     for k, v in elem.items():
        if k != 'id':
             result['{}_{}'.format(elem['id'], k)] = v

答案 1 :(得分:2)

您只需使用词典理解

result = {dic['id']+'_'+k:v for dic in dictionaries
                            for k,v in dic.items() if k != 'id'}

您可以(可能)通过在内部使用生成器来提高效率:

result = {dicid+k:v for dic,dicid in ((_dic,_dic['id']+'_') for _dic in dictionaries)
                    for k,v in dic.items() if k != 'id'}

这里我们保存查找(dic['id']),我们还必须只下一次下划线。这导致:

>>> {dicid+k:v for dic,dicid in ((_dic,_dic['id']+'_') for _dic in dictionaries)
...                     for k,v in dic.items() if k != 'id'}
{'2016_a_data_1': 106, '2015_a_data_2': 105, '2016_a_data_2': 200, '2015_a_data_1': 110}