parameters: (_dict)
return_statement: return result
docstring: Returns dict with the dunder keys converted back to nested dicts
  
      eg::
  
          >>> undunder_keys({'a': 'hello', 'b__c': 'world'})
          {'a': 'hello', 'b': {'c': 'world'}}
  
      :param _dict : (dict) flat dict
      :rtype       : (dict) nested dict
docstring_summary: Returns dict with the dunder keys converted back to nested dicts
docstring_tokens: Returns dict with the dunder keys converted back to nested dicts
function: def undunder_keys(_dict):
      """Returns dict with the dunder keys converted back to nested dicts
  
      eg::
  
          >>> undunder_keys({'a': 'hello', 'b__c': 'world'})
          {'a': 'hello', 'b': {'c': 'world'}}
  
      :param _dict : (dict) flat dict
      :rtype       : (dict) nested dict
  
      """
      def f(key, value):
          parts = key.split('__')
          return {
              parts[0]: value if len(parts) == 1 else f(parts[1], value)
          }
  
      result = {}
      for r in [f(k, v) for k, v in _dict.items()]:
          rk = list(r.keys())[0]
          if rk not in result:
              result.update(r)
          else:
              result[rk].update(r[rk])
      return result
function_tokens: def undunder_keys ( _dict ) : def f ( key , value ) : parts = key . split ( '__' ) return { parts [ 0 ] : value if len ( parts ) == 1 else f ( parts [ 1 ] , value ) } result = { } for r in [ f ( k , v ) for k , v in _dict . items ( ) ] : rk = list ( r . keys ( ) ) [ 0 ] if rk not in result : result . update ( r ) else : result [ rk ] . update ( r [ rk ] ) return result