将dict列表合并到python中的一个dict中

时间:2016-01-05 13:18:57

标签: python dictionary

我在python中有以下dicts列表。

[
{
"US": {
"Intial0": 12.515
},
{
"GE": {
"Intial0": 11.861
}
},
{
"US": {
"Final0": 81.159
}
},
{
"GE": {
"Final0": 12.9835
}
}
]

我希望最终的dicts列表为

[{"US": {"Initial0":12.515, "Final0": 81.159}}, {"GE": {"Initial0": 11.861, "Final0": 12.9835}}]

我很长一段时间都在努力解决这个问题。有什么帮助吗?

2 个答案:

答案 0 :(得分:1)

您可以使用Python defaultdict,如下所示:

from collections import defaultdict

lod = [
    {"US": {"Intial0": 12.515}},
    {"GE": {"Intial0": 11.861}},
    {"US": {"Final0": 81.159}},
    {"GE": {"Final0": 12.9835}}]

output = defaultdict(dict)

for d in lod:
    output[d.keys()[0]].update(d.values()[0])

print output

对于给出的数据,这将显示以下内容:

defaultdict(<type 'dict'>, {'GE': {'Intial0': 11.861, 'Final0': 12.9835}, 'US': {'Intial0': 12.515, 'Final0': 81.159}})

或者你可以将它转换回标准的Python字典print dict(output)给出:

{'GE': {'Intial0': 11.861, 'Final0': 12.9835}, 'US': {'Intial0': 12.515, 'Final0': 81.159}}

答案 1 :(得分:0)

list1 = [{&#34; US&#34;:{&#34; Intial0&#34;:12.515}},{&#34; GE&#34;:{&#34; Intial0&#34;: 11.861}},{&#34; US&#34;:{&#34; Final0&#34;:81.159}},{&#34; GE&#34;:{&#34; Final0&#34;:12.9835} }]

dict_US = {} dict_GE = {} 对于list1中的dict_x:         如果dict_x.keys()== [&#39; US&#39;]:                 dict_US.update(dict_x [&#34; US&#34;])         如果dict_x.keys()== [&#39; GE&#39;]:                 dict_GE.update(dict_x [&#34; GE&#34;]) list2中= [{&#34; US&#34;:dict_US},{&#34; GE&#34;:dict_GE}] print list2