I have multiple dicts/key-value pairs like this:
d1 = {key1: x1, key2: y1} d2 = {key1: x2, key2: y2}
I want the result to be a new di
def merge(d1, d2, merge): result = dict(d1) for k,v in d2.iteritems(): if k in result: result[k] = merge(result[k], v) else: result[k] = v return result d1 = {'a': 1, 'b': 2} d2 = {'a': 1, 'b': 3, 'c': 2} print merge(d1, d2, lambda x, y:(x,y)) {'a': (1, 1), 'c': 2, 'b': (2, 3)}