code: def add_hyperedges(self, hyperedges, attr_dict=None, **attr):
          
          attr_dict = self._combine_attribute_arguments(attr_dict, attr)
  
          hyperedge_ids = []
  
          for nodes in hyperedges:
              hyperedge_id = self.add_hyperedge(nodes, attr_dict.copy())
              hyperedge_ids.append(hyperedge_id)
  
          return hyperedge_ids
docs: Adds multiple hyperedges to the graph, along with any related
              attributes of the hyperedges.
              If any node of a hyperedge has not previously been added to the
              hypergraph, it will automatically be added here.
              Hyperedges without a "weight" attribute specified will be
              assigned the default value of 1.
  
          :param hyperedges: iterable container to references of the node sets
          :param attr_dict: dictionary of attributes shared by all
                      the hyperedges being added.
          :param attr: keyword arguments of attributes of the hyperedges;
                      attr's values will override attr_dict's values
                      if both are provided.
          :returns: list -- the IDs of the hyperedges added in the order
                      specified by the hyperedges container's iterator.
  
          See also:
          add_hyperedge
  
          Examples:
          ::
  
              >>> H = UndirectedHypergraph()
              >>> hyperedge_list = (["A", "B", "C"],
                                    ("A", "D"),
                                    set(["B", "D"]))
              >>> hyperedge_ids = H.add_hyperedges(hyperedge_list)