class_docstr: Very lightweight graph wrapper which caches neighborhoods as list.
  
  This dict subclass uses the __missing__ functionality to query graphs for
  their neighborhoods, and store the result as a list.  This is used to avoid
  the performance penalty incurred by subgraph views.
code: def __init__(self, G):
      self.G = G
  
imports: from collections import Counter, defaultdict
  from itertools import combinations, product
  from math import inf
  import networkx
  from networkx.utils import not_implemented_for, pairwise
label_desc: Use image node_id 1 to create a new _NeighborhoodCache object from inherited base classes: dict with example: obj = _NeighborhoodCache(G)