我有这样的数据结构:
[ {'SNAPSHOT': {'SnapshotVersion': '304'}},
{'SNAPSHOT': {'SnapshotCreationDate': '2015-06-21 17:33:41'}},
{'CafeData': {'CafeVersion': '2807'}},
{'CafeData': {'IsSoftwareOnly': '1'}},
{'CafeData'{'IsPassportTCPIP': '1'}}
]
输出应该是这样的:
[ {'SNAPSHOT': {'SnapshotVersion': '304','SnapshotCreationDate': '2015-06-21 17:33:41'}},
{'CafeData': {'CafeVersion': '2807','IsSoftwareOnly': '1','IsPassportTCPIP': '1'}}
]
答案 0 :(得分:8)
使用 https://docs.python.org/3/library/collections.html#collections.defaultdict 在遇到新键时在 defaultdict 中创建一个 dict。
import collections as co
dd = co.defaultdict(dict)
l = [ {'SNAPSHOT': {'SnapshotVersion': '304'}},
{'SNAPSHOT': {'SnapshotCreationDate': '2015-06-21 17:33:41'}},
{'CafeData': {'CafeVersion': '2807'}},
{'CafeData': {'IsSoftwareOnly': '1'}},
{'CafeData': {'IsPassportTCPIP': '1'}} ]
for i in l:
for k,v in i.items():
dd[k].update(v)
结果:
In [8]: dd
Out[8]:
defaultdict(dict,
{'SNAPSHOT': {'SnapshotVersion': '304',
'SnapshotCreationDate': '2015-06-21 17:33:41'},
'CafeData': {'CafeVersion': '2807',
'IsSoftwareOnly': '1',
'IsPassportTCPIP': '1'}})
答案 1 :(得分:1)
l = [
{'SNAPSHOT': {'SnapshotVersion': '304'}},
{'SNAPSHOT': {'SnapshotCreationDate': '2015-06-21 17:33:41'}},
{'CafeData': {'CafeVersion': '2807'}},
{'CafeData': {'IsSoftwareOnly': '1'}},
{'CafeData': {'IsPassportTCPIP': '1'}}
]
mrgdict={}
for d in l:
for key, value in d.items():
if key in mrgdict:
mrgdict[key].update(value)
else:
mrgdict[key]=value
dict={}
l1=[]
for key,value in mrgdict.items():
dict[key]=value
l1.append(dict)
dict={}
print(l1)