python-3.x - 是否有用于在 python 中合并两个嵌套字典值的代码?
问题描述
我有嵌套字典并希望获得合并值
d1=dict()
d2=dict()
d1 = {1: {'x1':('y1')}, 2: 'y1'}
d2 = {1: {'x1':('y3')}, 2: 'y2'}
我希望通过以下方式获得结果:
'x1':('y1','y3') ('y1','y2')
但找到结果
({'x1': 'y1'}, {'x1': 'y3'}) ('y1', 'y2')
如何得到预期的结果?
解决方案
您可以通过在合并时检查值来实现它,如果它们是嵌套字典,则使用对相同函数的循环调用合并它们,如下所示:
mergeTwoDic(d1[key],d2[key]) if isinstance(d1[key],dict) and isinstance(d2[key],dict) else (d1[key],d2[key])
所以最终的解决方案如下
d1=dict()
d2=dict()
d1 = {1: {'x1':('y1')}, 2: 'y1'}
d2 = {1: {'x1':('y3')}, 2: 'y2'}
def mergeTwoDic (d1,d2):
result = {};
for key in d1.keys() | d2.keys():
if key in d1 and key in d2:
result[key] = mergeTwoDic(d1[key],d2[key]) if isinstance(d1[key],dict) and isinstance(d2[key],dict) else (d1[key],d2[key])
else:
result[key] = d1.get(key) or d2.get(key)
return result
print(mergeTwoDic(d1,d2).values())
输出:
[{'x1': ('y1', 'y3')}, ('y1', 'y2')]
推荐阅读
- arrays - 从 R 中的另一个 3D 数组填充 3D 数组的最快方法
- ruby-on-rails - 可以增加数据库数据的Rails按钮
- python - 鉴于其基础,如何恢复一个类的mro?
- python - 在行中查找值并更新其他行
- c - 事件处理程序?
- jquery - 每次按下“查看更多”按钮时,jQuery 模态都会显示随机信息
- php - 如何在谷歌图表上使用mysql数据
- c# - C#:检查相等性时如何评估对象的多个比较器类?
- node.js - 无法通过 NPM 的 @google-cloud/storage 包访问存储桶
- postgresql - 如何从图像文件夹在 postgres 表中添加图像