def mergedefaults(d1, d2):
 for k in d2:
  if ((k in d1) and isinstance(d1[k], dict) and isinstance(d2[k], dict)):
   mergedefaults(d1[k], d2[k])
  else:
   d1.setdefault(k, d2[k])

def mergedefaults ( d1 , d2 ) : for k in d2 : if ( ( k in d1 ) and isinstance ( d1 [ k ] , dict ) and isinstance ( d2 [ k ] , dict ) ) : mergedefaults ( d1 [ k ] , d2 [ k ] ) else : d1 . setdefault ( k , d2 [ k ] )
recursively merge two dictionaries .