python - 有 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
解决方案
使用 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()]
推荐阅读
- c++ - 如何在 linux 中使用 ncurses 创建全屏窗口?
- vuelidate - 如何使用 vuelidate 验证电子邮件地址?
- javascript - 如何解析包含数组的 JS 对象以在 JavaScript 的 json2csv 模块中使用?
- cuda - 我们可以在 cudaLaunchKernel 中获取 cuda 内核函数名称吗?
- json - 我们可以将外部 JSON 文件复制到雪花中吗?
- jspdf - JSPDF-autotable:根据列数设置动态字体大小
- c# - Microsoft bot V4 Skill Bot 在 SendActivityAsync 函数中回复 Root bot 时响应 500(内部错误)
- python-3.x - 如果其中一个产生结果,我可以停止等待线程完成吗?
- c# - 如何使用 GTA5 的 Scripthookvdotnet 在 C# 中每秒刷新变量的值
- c# - 在 WinForms-Validating-Event 中同步异步任务