class_docstr: Union-find data structure.
  
  Each unionFind instance X maintains a family of disjoint sets of
  hashable objects, supporting the following two methods:
  
  - X[item] returns a name for the set containing the given item.
    Each set is named by an arbitrarily-chosen one of its members; as
    long as the set remains unchanged it will keep the same name. If
    the item is not yet part of a set in X, a new singleton set is
    created for it.
  
  - X.union(item1, item2, ...) merges the sets containing each item
    into a single larger set.  If any item is not yet part of a set
    in X, it is added to X as one of the members of the merged set.
  
    Union-find data structure. Based on Josiah Carlson's code,
    https://code.activestate.com/recipes/215912/
    with significant additional changes by D. Eppstein.
    http://www.ics.uci.edu/~eppstein/PADS/UnionFind.py
docstr: Find and return the name of the set containing the object.
docstr_tok: ["Find","and","return","the","name","of","the","set","containing","the","object","."]
code: def __getitem__(self, object):
      """Find and return the name of the set containing the object."""
  
      # check for previously unknown object
      if object not in self.parents:
          self.parents[object] = object
          self.weights[object] = 1
          return object
  
      # find path of objects leading to the root
      path = []
      root = self.parents[object]
      while root != object:
          path.append(object)
          object = root
          root = self.parents[object]
  
      # compress the path and return
      for ancestor in path:
          self.parents[ancestor] = root
      return root
  
imports: from networkx.utils import groups
label_desc: Use image node_id 2 for calling the UnionFind obj's underlying member method code with example usage: obj.__getitem__(object) and returns: root, object