Python 有两个字典,我想附加第二个字典中的匹配键,并将它们存储为父字典中的字典列表
例如,我有以下两本字典Python 有两个字典,我想附加第二个字典中的匹配键,并将它们存储为父字典中的字典列表,python,Python,例如,我有以下两本字典 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',
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'
}
]
}
]
我想得到上面的结果,使用dictionary zip或orderedict将dict1转换成一个真正的dict,id作为键,并向每个条目添加一个空的详细信息列表。然后,迭代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()]
到目前为止,您尝试了什么?我尝试了以下内容-对于dict1中的I:arr=[]对于dict2中的j:if I['id']==j['idd']:arr.appendj I.update{'Details':arr}请使用此代码片段更新您的问题-注释中的代码不可读-并解释什么不起作用。效果很好,但我不想使用我的方法。我只是想知道如何使用zip或OrderedDitch实现同样的效果。我不能在空闲状态下运行它,它显示的“**”是无效语法。@pravashpanigrahi:您使用的是哪种python版本?