On Mon, Feb 24, 2014 at 12:31 AM, <haael@interia.pl> wrote:
dict_default = {'a':None, 'b':[]} fun(**(funA(dict_default) | funB(dict_default))
All you need is a shorter name for your function and the job's done. Since it'll be local to your module anyway, it doesn't need the long and verbose name. Here's Steven's #3, implemented as a function: def merge(a, b): "Merge two dicts using the 'or' operator c = a.copy() for key, value in b.items(): if key in c: c[key] = c[key] or value else: c[key] = value Or you could make it shorter thus: def merge(a, b): "Merge two dicts using the 'or' operator c = a.copy() for key, value in b.items(): c[key] = c.get(key) or value Then your code is: dict_default = {'a':None, 'b':[]} fun(**merge(funA(dict_default), funB(dict_default))) That's it! ChrisA