为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Python 组合 JSON 数据相同键的所有值

如何使用 Python 组合 JSON 数据相同键的所有值

慕斯王 2023-10-18 20:57:20
我想使用 python 组合 JSON 数据相同键的所有值。任何帮助都将不胜感激。请在下面找到输入数据:{'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'}}}我想要的输出格式:{"MESSAGE_DATA": {    "BGEN_CENQO_XTRA_KEY": {        "BGEN_CENQO_CLNTCOY": "A",        "BGEN_CENQO_CLNTPFX": "CN",        "BGEN_CENQO_CLNTNUM": "50003159"    }}}
查看完整描述

1 回答

?
Helenr

TA贡献1780条经验 获得超3个赞

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 的结构将是:


{'MESSAGE_DATA': {

    'BGEN_CENQO_XTRA_KEY': {

       'BGEN_CENQO_CLNTCOY': 'A',

       'BGEN_CENQO_CLNTNUM': '50003159',

       'BGEN_CENQO_CLNTPFX': 'CN'

     }

}}


查看完整回答
反对 回复 2023-10-18
  • 1 回答
  • 0 关注
  • 66 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信