argparse add_argument 来自字典

argparse add_argument from dictionary

我尝试使用以下字典在 argparse 中生成参数:

inititateCmdMap = {
    '-l': {
        'help': 'list of transactions for type',
        'choices': ['all', 'utxq', 'mtxq']},
    '-u': {
        'help', 'url of rest server'},
    '-k': {
        'help': 'something helpful'},
    '-x': {
        'help': 'expression'}}

但我不确定如何传递它,因为以下情况除外:

[parser.add_argument(v[0], v[1]) for v in inititateCmdMap.items()]

 in add_argument
    kwargs = self._get_optional_kwargs(*args, **kwargs)
  File "/usr/local/Cellar/python/3.6.4_3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/argparse.py", line 1446, in _get_optional_kwargs
    if not option_string[0] in self.prefix_chars:
KeyError: 0

这可能吗?

您传递的是 dict 本身,而不是解压其内容。

这样试试:

for arg, kwargs in inititateCmdMap.items():
    parser.add_argument(arg, **kwargs):