我希望有效地合并两个(相当随意的)数据结构:一个代表一组默认值,一个代表覆盖。下面的示例数据。(天真地迭代结构是可行的,但速度很慢。)关于处理这种情况的最佳方法的想法?
_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' % (结果) )