docs: def get_arg_dict(argv=None, prefix_list=['--'], type_hints={}):
      r"""
      Yet another way for parsing args
  
      CommandLine:
          python -m utool.util_arg --exec-get_arg_dict
          python -m utool.util_arg --test-get_arg_dict
  
      Example:
          >>> # ENABLE_DOCTEST
          >>> from utool.util_arg import *  # NOQA
          >>> import utool as ut
          >>> import shlex
          >>> argv = shlex.split('--test-show_name --name=IBEIS_PZ_0303 --db testdb3 --save "~/latex/crall-candidacy-2015/figures/IBEIS_PZ_0303.jpg" --dpath figures --caption="Shadowed"  --figsize=11,3 --no-figtitle -t foo bar baz biz --notitle')
          >>> arg_dict = ut.get_arg_dict(argv, prefix_list=['--', '-'], type_hints={'t': list})
          >>> result = ut.repr2(arg_dict, nl=1)
          >>> # verify results
          >>> print(result)
          {
              'caption': 'Shadowed',
              'db': 'testdb3',
              'dpath': 'figures',
              'figsize': '11,3',
              'name': 'IBEIS_PZ_0303',
              'no-figtitle': True,
              'notitle': True,
              'save': '~/latex/crall-candidacy-2015/figures/IBEIS_PZ_0303.jpg',
              't': ['foo', 'bar', 'baz', 'biz'],
              'test-show_name': True,
          }
      """
      if argv is None:
          argv = sys.argv
      arg_dict = {}
  
      def startswith_prefix(arg):
          return any([arg.startswith(prefix) for prefix in prefix_list])
  
      def argx_has_value(argv, argx):
          # Check if has a value
          if argv[argx].find('=') > -1:
              return True
          if argx + 1 < len(argv) and not startswith_prefix(argv[argx + 1]):
              return True
          return False
  
      def get_arg_value(argv, argx, argname):
          if argv[argx].find('=') > -1:
              return '='.join(argv[argx].split('=')[1:])
          else:
              type_ = type_hints.get(argname, None)
              if type_ is None:
                  return argv[argx + 1]
              else:
                  return parse_arglist_hack(argx, argv=argv)
  
      for argx in range(len(argv)):
          arg = argv[argx]
          for prefix in prefix_list:
              if arg.startswith(prefix):
                  argname = arg[len(prefix):]
                  if argx_has_value(argv, argx):
                      if arg.find('=') > -1:
                          argname = arg[len(prefix):arg.find('=')]
                      argvalue = get_arg_value(argv, argx, argname)
                      arg_dict[argname] = argvalue
                  else:
                      arg_dict[argname] = True
                  break
      return arg_dict