我们已经有了一些非递归解决方案here .
import argparse
args = argparse.Namespace()
args.foo = 1
args.bar = [1,2,3]
args.c = argparse.Namespace()
args.c.foo = 'a'
d = vars(args)
>>> d
{'foo': 1, 'bar': [1, 2, 3], 'c': Namespace(foo='a')}
问题是,如果二级条目也是一个命名空间,那么我们实际得到的是一个命名空间的字典。
问题是是否有一个方便的递归解决方案可供我们使用。
最佳答案
我认为没有现成的递归解决方案,但这是一个简单的解决方案:
def namespace_to_dict(namespace):
return {
k: namespace_to_dict(v) if isinstance(v, argparse.Namespace) else v
for k, v in vars(namespace).items()
}
>>> namespace_to_dict(args)
{'foo': 1, 'bar': [1, 2, 3], 'c': {'foo': 'a'}}
关于python - 递归地将 argparse 命名空间转换为 dict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71845452/