我希望有效地合并两个(相当随意的)数据结构:一个代表一组默认值,一个代表覆盖。下面的示例数据。(天真地迭代结构是可行的,但速度很慢。)关于处理这种情况的最佳方法的想法?
_DEFAULT = {'A':1122,'B':1133,'C':[9988,{'E':[{'F':6666,},],},],}
_OVERRIDE1 = {'B':1234,'C':[9876,{'D':2345,'E':[{'F':6789,'G':9876,},1357,],},] , }
_ANSWER1 = {'A':1122,'B':1234,'C':[9876,{'D':2345,'E':[{'F':6789,'G':9876,},1357 , ], }, ], }
_OVERRIDE2 = {'C':[6543,{'E':[{'G':9876,},],},],}
_ANSWER2 = {'A':1122,'B':1133,'C':[6543,{'E':[{'F':6666,'G':9876,},],},],}
_OVERRIDE3 = {'B':3456,'C':[1357,{'D':4567,'E':[{'F':6677,'G':9876,},2468,],},] , }
_ANSWER3 = {'A':1122,'B':3456,'C':[1357,{'D':4567,'E':[{'F':6677,'G':9876,},2468 , ], }, ], }
这是如何运行测试的示例:(字典更新不起作用,只是一个存根函数。)
导入迭代工具
def mergeStuff(默认,覆盖):
# 这不起作用
结果 = 字典(默认)
结果.更新(覆盖)
返回结果
定义主():
对于覆盖,在 itertools.izip(_OVERRIDES, _ANSWERS) 中回答:
结果 = mergeStuff(_DEFAULT,覆盖)
print('ANSWER: %s' % (answer) )
print('结果:%s\n' % (结果) )