code: def dict_expand(d, prefix=None):
      
      result = {}
      for k, v in d.items():
          if isinstance(v, dict):
              result.update(dict_expand(v, prefix=k))
          else:
              result[k] = v
  
      if prefix is not None:
          result = {make_tuple(prefix) + make_tuple(k): v
                    for k, v in result.items()}
      return result
docs: Recursively expand subdictionaries returning dictionary
      dict_expand({1:{2:3}, 4:5}) = {(1,2):3, 4:5}