繁体   English   中英

Argparse 字典到命名空间

[英]Argparse Dictionary to Namespace

我在 python 代码中使用argparse作为参数解析器。 将字典解析为 argparse object 的最佳方法是什么?

例如,我的字典是:

{
    "activation_dropout": 0.0,
    "activation_fn": "gelu",
    "attention_dropout": 0.0,
    "beam": 1,
}

我期望的是一个argparse.Namespace object 属性activation_dropoutactivation_fnattention_dropoutbeam

我希望argparse中有一个方法可以将输入作为字典,并给出一个argparse ,并将命名空间作为这些变量。

只需使用**解包:

In [57]: adict={'foo':1, 'bar':'astring', 'baz':[1,2,3]}
In [59]: argparse.Namespace(**adict)
Out[59]: Namespace(bar='astring', baz=[1, 2, 3], foo=1)
In [60]: args = argparse.Namespace(**adict)
In [61]: args
Out[61]: Namespace(bar='astring', baz=[1, 2, 3], foo=1)
In [62]: args.bar
Out[62]: 'astring'

它的文档:

In [63]: argparse.Namespace?
Init signature: argparse.Namespace(**kwargs)
Docstring:     
Simple object for storing attributes.

Implements equality by attribute names and values, and provides a simple string representation.

这是一个简单的 object 子类,将其**kwargs分配给其属性。 并提供了基本的显示方法。

vars是逆转的标准 Python 方法:

In [65]: vars(args)
Out[65]: {'foo': 1, 'bar': 'astring', 'baz': [1, 2, 3]}

在内部, parser.parse_args创建一个argparse.Namespace()并使用setattr(args, dest, value)分配值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM