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
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,
        }