python - 递归地将 argparse 命名空间转换为 dict

标签 python dictionary namespaces argparse

我们已经有了一些非递归解决方案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/

相关文章:

单独文件中的 C# 命名空间/类在查看时导致错误

javascript - this 指的是单击的对象而不是 namespace

python - 使用字典通过分配功能将一些列添加到数据框中

python - 在 python 中安装 'lr_utils' 的问题

java - 在键/值对中仅使用一个键有效地查找值,时间复杂度明智 : Java

python - 为什么当我点击 Dictionary 变量时 Spyder 不能打开它?

python - 如何使用 numpy 对矩阵中的多行进行向量化运算

在 Geany 中工作的 Python 代码不在 IDLE 中?

python - 字典列表继续覆盖 - 我做错了什么?

PHP 命名空间利用率