我想将嵌套的字典列表合并到 python 2.6 中的单个字典列表, 示例数据 - 这里仅给出了数千次迭代中的两次迭代。
INPUTJSON=[
{'EXCEPTIONS':
[
{'LASTOCCURED': '2018-03-12 12:11:23', 'COUNT': 25, 'NAME': 'CLFRW0134W'},
{'LASTOCCURED': '2018-03-12 12:11:42', 'COUNT': 10, 'NAME': 'SRV0145GH'}
],
'JVM_NAME': 'TestiingAWS01', 'GCCOUNT': 10},
{'EXCEPTIONS':
[
{'LASTOCCURED': '2018-03-13 12:14:23', 'COUNT': 25, 'NAME': 'CLFRW0134W'},
{'LASTOCCURED': '2018-03-18 12:55:23', 'COUNT': 10, 'NAME': 'SRV0145GH'}
],
'JVM_NAME': 'QAAWS02', 'GCCOUNT': 10}
]
预期结果:
[
{'JVM_NAME':'TestiingAWS01','GCCOUNT':10, 'LASTOCCURED': '2018-03-12 12:11:23', 'COUNT': 25, 'NAME': 'CLFRW0134W'}, {'LASTOCCURED': '2018-03-12 12:11:42', 'COUNT': 10, 'NAME': 'SRV0145GH', 'JVM_NAME':'TestiingAWS01','GCCOUNT':10},
{'JVM_NAME': 'QAAWS02', 'GCCOUNT': 10, 'LASTOCCURED': '2018-03-13 12:14:23', 'COUNT': 25, 'NAME': 'CLFRW0134W'}, {'LASTOCCURED': '2018-03-18 12:55:23', 'COUNT': 10, 'NAME': 'SRV0145GH', 'JVM_NAME': 'QAAWS02', 'GCCOUNT': 10}
]
请高手帮我实现这个,这样我就可以轻松地将最终数据处理成sqlite。
更新:感谢所有提供快速解决方案的专家,从这里的所有答案中整合我通过避免硬编码“键”(因为每个键上有 40 个键)为我的数据提供了一个工作代码迭代)在 python 2.6 上。
def merge_two_dicts(x, y):
"""Given two dicts, merge them into a new dict as a shallow copy."""
z = x.copy()
z.update(y)
return z
resultlist =[]
for i,v in enumerate(INPUTJSON):
EXCEPTIONS = v["EXCEPTIONS"]
del v["EXCEPTIONS"]
for j,val in enumerate(EXCEPTIONS):
resultlist.append(merge_two_dicts(EXCEPTIONS[j],INPUTJSON[i]))
print resultlist
Can it be compiled in comprehension list using lambda?
请您参考如下方法:
这是一种方法。
lst = [{**{'JVM_NAME': i['JVM_NAME'], 'GCCOUNT': i['GCCOUNT'], **w}} \
for i in INPUTJSON for w in i['EXCEPTIONS']]
对于 ** 语法,参见 How to merge two dictionaries in a single expression?
结果
[{'COUNT': 25,
'GCCOUNT': 10,
'JVM_NAME': 'TestiingAWS01',
'LASTOCCURED': '2018-03-12 12:11:23',
'NAME': 'CLFRW0134W'},
{'COUNT': 10,
'GCCOUNT': 10,
'JVM_NAME': 'TestiingAWS01',
'LASTOCCURED': '2018-03-12 12:11:42',
'NAME': 'SRV0145GH'},
{'COUNT': 25,
'GCCOUNT': 10,
'JVM_NAME': 'QAAWS02',
'LASTOCCURED': '2018-03-13 12:14:23',
'NAME': 'CLFRW0134W'},
{'COUNT': 10,
'GCCOUNT': 10,
'JVM_NAME': 'QAAWS02',
'LASTOCCURED': '2018-03-18 12:55:23',
'NAME': 'SRV0145GH'}]
