1 回答

TA貢獻1780條經(jīng)驗 獲得超4個贊
from functools import reduce
lst = [{'MESSAGE_DATA': {'BGEN_CENQO_XTRA_KEY': {'BGEN_CENQO_CLNTCOY': 'A'}}},
{'MESSAGE_DATA': {'BGEN_CENQO_XTRA_KEY': {'BGEN_CENQO_CLNTPFX': 'CN'}}},
{'MESSAGE_DATA': {'BGEN_CENQO_XTRA_KEY': {'BGEN_CENQO_CLNTNUM': '50003159'}}}]
def merge(a, b, path=None):
? ? if path is None: path = []
? ? for key in b:
? ? ? ? if key in a:
? ? ? ? ? ? if isinstance(a[key], dict) and isinstance(b[key], dict):
? ? ? ? ? ? ? ? merge(a[key], b[key], path + [str(key)])
? ? ? ? ? ? elif a[key] == b[key]:
? ? ? ? ? ? ? ? pass?
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? raise Exception('Conflict at %s' % '.'.join(path + [str(key)]))
? ? ? ? else:
? ? ? ? ? ? a[key] = b[key]
? ? return a
d = reduce(merge, lst)
字典 d 的結(jié)構(gòu)將是:
{'MESSAGE_DATA': {
? ? 'BGEN_CENQO_XTRA_KEY': {
? ? ? ?'BGEN_CENQO_CLNTCOY': 'A',
? ? ? ?'BGEN_CENQO_CLNTNUM': '50003159',
? ? ? ?'BGEN_CENQO_CLNTPFX': 'CN'
? ? ?}
}}
添加回答
舉報