code: def get_hyperedge_id(self, nodes):
          
          frozen_nodes = frozenset(nodes)
  
          if not self.has_hyperedge(frozen_nodes):
              raise ValueError("No such hyperedge exists.")
  
          return self._node_set_to_hyperedge[frozen_nodes]
docs: From a set of nodes, returns the ID of the hyperedge that this
          set comprises.
  
          :param nodes: iterable container of references to nodes in the
                      the hyperedge to be added
          :returns: str -- ID of the hyperedge that has that the specified
                  node set comprises.
          :raises: ValueError -- No such hyperedge exists.
  
          Examples:
          ::
  
              >>> H = UndirectedHypergraph()
              >>> hyperedge_list = (["A", "B", "C"],
                                    ("A", "D"),
                                    set(["B", "D"]))
              >>> hyperedge_ids = H.add_hyperedges(hyperedge_list)
              >>> x = H.get_hyperedge_id(["A", "B", "C"])