Argparse 字典到命名空间
Argparse Dictionary to Namespace
我在 python 代码中使用 argparse
作为参数解析器。将字典解析为 argparse 对象的最佳方法是什么?
例如,我的词典是:
{
"activation_dropout": 0.0,
"activation_fn": "gelu",
"attention_dropout": 0.0,
"beam": 1,
}
我期望的是具有属性 activation_dropout
、activation_fn
、attention_dropout
和 beam
的 argparse.Namespace
对象
我希望 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.
它是一个简单的对象子类,将其 **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)
赋值。
我在 python 代码中使用 argparse
作为参数解析器。将字典解析为 argparse 对象的最佳方法是什么?
例如,我的词典是:
{
"activation_dropout": 0.0,
"activation_fn": "gelu",
"attention_dropout": 0.0,
"beam": 1,
}
我期望的是具有属性 activation_dropout
、activation_fn
、attention_dropout
和 beam
argparse.Namespace
对象
我希望 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.
它是一个简单的对象子类,将其 **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)
赋值。