首页 > 解决方案 > 有 2 个字典,我想附加第二个字典中的匹配键并将它们作为列表 f 字典存储在父字典中

问题描述

例如,我有以下 2 个字典,

dict1 = [{'id': 1, 'name': 'BOB'}, {'id': 2, 'name': 'DOD'}]
dict2 = [{'idd': 1, 'comp': 'BB', }, {'idd': 1, 'work': 'pent'}, {'idd': 2, 'comp': 'DD'}]

我想要下面的输出 -

dict1 = [
          {
           'id': 1,
           'name': 'BOB',
           'Details:[
                      {
                       'idd': 1,
                       'comp': 'BB'
                      },
                      {
                       'idd': 1,
                       'work': 'pent'
                       }
                    ]
          },
          {
           'id': 2,
           'name': 'DOD',
           'Details':[
                      {
                       'idd': 2,
                       'comp': 'DD'
                      }
                    ]
          }
        ]

我想得到上面的结果,使用字典 zip 或 ordereddict

标签: python

解决方案


使用 as 键将 转换dict1为真正的字典,并为每个条目id添加一个空列表。Details然后,迭代 dict2 和 以及缺失的元素。

dict1 = {item['id']: {**item, **{'Details': []}} for item in dict1}

for item in dict2:
    item = dict(item)
    _id = item.pop('idd')
    temp[_id]['Details'].append(item)

dict1 = [item for item in dict1.values()]

推荐阅读