nodes: 0, module; 1, function_definition; 2, function_name:map_list; 3, parameters; 4, block; 5, identifier:key_map; 6, list_splat_pattern; 7, default_parameter; 8, default_parameter; 9, expression_statement; 10, expression_statement; 11, comment:# Initialize empty dict.; 12, for_statement; 13, return_statement; 14, identifier:inputs; 15, identifier:copy; 16, False; 17, identifier:base; 18, None; 19, comment:"""
      Returns a new dict.
  
      :param key_map:
          A list that maps the dict keys ({old key: new key}
      :type key_map: list[str | dict | list]
  
      :param inputs:
          A sequence of data.
      :type inputs: iterable | dict | int | float | list | tuple
  
      :param copy:
          If True, it returns a deepcopy of input values.
      :type copy: bool, optional
  
      :param base:
          Base dict where combine multiple dicts in one.
      :type base: dict, optional
  
      :return:
          A unique dict with new values.
      :rtype: dict
  
      Example::
  
          >>> key_map = [
          ...     'a',
          ...     {'a': 'c'},
          ...     [
          ...         'a',
          ...         {'a': 'd'}
          ...     ]
          ... ]
          >>> inputs = (
          ...     2,
          ...     {'a': 3, 'b': 2},
          ...     [
          ...         1,
          ...         {'a': 4}
          ...     ]
          ... )
          >>> d = map_list(key_map, *inputs)
          >>> sorted(d.items())
          [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
      """; 20, assignment; 21, pattern_list; 22, call; 23, block; 24, call; 25, identifier:d; 26, conditional_expression:{} if base is None else base; 27, identifier:m; 28, identifier:v; 29, identifier:zip; 30, argument_list; 31, if_statement; 32, identifier:combine_dicts; 33, argument_list; 34, dictionary; 35, comparison_operator:base is None; 36, identifier:base; 37, identifier:key_map; 38, identifier:inputs; 39, call; 40, block; 41, elif_clause; 42, else_clause; 43, keyword_argument; 44, keyword_argument; 45, identifier:base; 46, None; 47, identifier:isinstance; 48, argument_list; 49, expression_statement; 50, comment:# Apply a map dict.; 51, call; 52, block; 53, block; 54, identifier:copy; 55, identifier:copy; 56, identifier:base; 57, identifier:d; 58, identifier:m; 59, identifier:dict; 60, call; 61, identifier:isinstance; 62, argument_list; 63, expression_statement; 64, comment:# Apply a map list.; 65, expression_statement; 66, comment:# Apply map.; 67, identifier:map_dict; 68, argument_list; 69, identifier:m; 70, identifier:list; 71, call; 72, assignment; 73, identifier:m; 74, identifier:v; 75, keyword_argument; 76, identifier:map_list; 77, argument_list; 78, subscript; 79, identifier:v; 80, identifier:base; 81, identifier:d; 82, identifier:m; 83, list_splat; 84, keyword_argument; 85, identifier:d; 86, identifier:m; 87, identifier:v; 88, identifier:base; 89, identifier:d
code: def map_list(key_map, *inputs, copy=False, base=None):
      """
      Returns a new dict.
  
      :param key_map:
          A list that maps the dict keys ({old key: new key}
      :type key_map: list[str | dict | list]
  
      :param inputs:
          A sequence of data.
      :type inputs: iterable | dict | int | float | list | tuple
  
      :param copy:
          If True, it returns a deepcopy of input values.
      :type copy: bool, optional
  
      :param base:
          Base dict where combine multiple dicts in one.
      :type base: dict, optional
  
      :return:
          A unique dict with new values.
      :rtype: dict
  
      Example::
  
          >>> key_map = [
          ...     'a',
          ...     {'a': 'c'},
          ...     [
          ...         'a',
          ...         {'a': 'd'}
          ...     ]
          ... ]
          >>> inputs = (
          ...     2,
          ...     {'a': 3, 'b': 2},
          ...     [
          ...         1,
          ...         {'a': 4}
          ...     ]
          ... )
          >>> d = map_list(key_map, *inputs)
          >>> sorted(d.items())
          [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
      """
  
      d = {} if base is None else base  # Initialize empty dict.
  
      for m, v in zip(key_map, inputs):
          if isinstance(m, dict):
              map_dict(m, v, base=d)  # Apply a map dict.
          elif isinstance(m, list):
              map_list(m, *v, base=d)  # Apply a map list.
          else:
              d[m] = v  # Apply map.
  
      return combine_dicts(copy=copy, base=d)