code: def get_levels(dict_, n=0, levels=None):
      r
      if levels is None:
          levels_ = [[] for _ in range(dict_depth(dict_))]
      else:
          levels_ = levels
      if dict_ is None:
          return []
      for key in dict_.keys():
          levels_[n].append(key)
      for val in dict_.values():
          get_levels(val, n + 1, levels_)
      return levels_
docs: r"""
      DEPCIRATE
  
      Args:
          dict_ (dict_):  a dictionary
          n (int): (default = 0)
          levels (None): (default = None)
  
      CommandLine:
          python -m utool.util_graph --test-get_levels --show
          python3 -m utool.util_graph --test-get_levels --show
  
      Example:
          >>> # DISABLE_DOCTEST
          >>> from utool.util_graph import *  # NOQA
          >>> import utool as ut
          >>> from_root = {
          >>>     'dummy_annot': {
          >>>         'chip': {
          >>>                 'keypoint': {
          >>>                             'fgweight': None,
          >>>                         },
          >>>             },
          >>>         'probchip': {
          >>>                 'fgweight': None,
          >>>             },
          >>>     },
          >>> }
          >>> dict_ = from_root
          >>> n = 0
          >>> levels = None
          >>> levels_ = get_levels(dict_, n, levels)
          >>> result = ut.repr2(levels_, nl=1)
          >>> print(result)
          [
              ['dummy_annot'],
              ['chip', 'probchip'],
              ['keypoint', 'fgweight'],
              ['fgweight'],
          ]