nodes: 0, module; 1, function_definition; 2, function_name:combine_dicts; 3, parameters; 4, block; 5, list_splat_pattern; 6, default_parameter; 7, default_parameter; 8, expression_statement; 9, if_statement; 10, comment:# Return combined dict.; 11, return_statement; 12, identifier:dicts; 13, identifier:copy; 14, False; 15, identifier:base; 16, None; 17, comment:"""
      Combines multiple dicts in one.
  
      :param dicts:
          A sequence of dicts.
      :type dicts: dict
  
      :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.
      :rtype: dict
  
      Example::
  
          >>> sorted(combine_dicts({'a': 3, 'c': 3}, {'a': 1, 'b': 2}).items())
          [('a', 1), ('b', 2), ('c', 3)]
      """; 18, boolean_operator; 19, comment:# Only one input dict.; 20, block; 21, else_clause; 22, conditional_expression:{k: _copy.deepcopy(v) for k, v in cd.items()} if copy else cd; 23, comparison_operator:len(dicts) == 1; 24, comparison_operator:base is None; 25, expression_statement; 26, block; 27, dictionary_comprehension; 28, identifier:copy; 29, identifier:cd; 30, call; 31, integer:1; 32, identifier:base; 33, None; 34, assignment; 35, expression_statement; 36, comment:# Initialize empty dict.; 37, for_statement; 38, pair; 39, for_in_clause; 40, identifier:len; 41, argument_list; 42, identifier:cd; 43, call; 44, assignment; 45, identifier:d; 46, identifier:dicts; 47, comment:# Combine dicts.; 48, block; 49, identifier:k; 50, call; 51, pattern_list; 52, call; 53, identifier:dicts; 54, attribute; 55, argument_list; 56, identifier:cd; 57, conditional_expression:{} if base is None else base; 58, if_statement; 59, attribute; 60, argument_list; 61, identifier:k; 62, identifier:v; 63, attribute; 64, argument_list; 65, subscript; 66, identifier:copy; 67, dictionary; 68, comparison_operator:base is None; 69, identifier:base; 70, identifier:d; 71, comment:# noinspection PyTypeChecker; 72, block; 73, identifier:_copy; 74, identifier:deepcopy; 75, identifier:v; 76, identifier:cd; 77, identifier:items; 78, identifier:dicts; 79, integer:0; 80, identifier:base; 81, None; 82, expression_statement; 83, call; 84, attribute; 85, argument_list; 86, identifier:cd; 87, identifier:update; 88, identifier:d
code: def combine_dicts(*dicts, copy=False, base=None):
      """
      Combines multiple dicts in one.
  
      :param dicts:
          A sequence of dicts.
      :type dicts: dict
  
      :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.
      :rtype: dict
  
      Example::
  
          >>> sorted(combine_dicts({'a': 3, 'c': 3}, {'a': 1, 'b': 2}).items())
          [('a', 1), ('b', 2), ('c', 3)]
      """
  
      if len(dicts) == 1 and base is None:  # Only one input dict.
          cd = dicts[0].copy()
      else:
          cd = {} if base is None else base  # Initialize empty dict.
  
          for d in dicts:  # Combine dicts.
              if d:
                  # noinspection PyTypeChecker
                  cd.update(d)
  
      # Return combined dict.
      return {k: _copy.deepcopy(v) for k, v in cd.items()} if copy else cd