code: def _update_with_replacement(lhs_dict, rhs_dict):
      
      combined_dict = itertools.chain(lhs_dict.items(), rhs_dict.items())
      # Overwrite keys which have the same string values
      string_map = {key.as_string(): (key, value) for key, value in combined_dict}
      # Return to dictionary
      return dict(string_map.values())
docs: Delete nodes that equate to duplicate keys
  
      Since an astroid node doesn't 'equal' another node with the same value,
      this function uses the as_string method to make sure duplicate keys
      don't get through
  
      Note that both the key and the value are astroid nodes
  
      Fixes issue with DictUnpack causing duplicte keys
      in inferred Dict items
  
      :param dict(nodes.NodeNG, nodes.NodeNG) lhs_dict: Dictionary to 'merge' nodes into
      :param dict(nodes.NodeNG, nodes.NodeNG) rhs_dict: Dictionary with nodes to pull from
      :return dict(nodes.NodeNG, nodes.NodeNG): merged dictionary of nodes