parser.add_argument('-r', default='0', action='store')
pieces = split_list(sys.argv[1:], lambda x: x in ('foo', 'bar', 'baz', 'quux'))
options = {}
default = argparse.Namespace()
for args in pieces:
    if not args:
        continue
ns = copy.deepcopy(default)
default = parser.parse_args(args[:-1], namespace=ns)
options[args[-1]] = default
print(options)
Может ли argparse связать позиционные аргументы с именованными аргументами?