如何从 argument_group 获取嵌套字典

How to get nested dict from argument_group

我希望程序的不同部分只看到解析的必要参数。

parser = argparse.ArgumentParser()
log = parser.add_argument_group()
log.add_argument('--name')

mp = parser.add_argument_group()
mp.add_argument('--processes', type=int)

args = parser.parse_args()

我希望得到像 {'mp':{'processes'=1}, 'log':{'name'='log.log'}} 这样的字典,但是 vars(args) 将其扁平化为 {'processes'=1, 'name'='log.log'}

虽然这不是问题的精确解决方案,但它 returns 是理想的选择。

class Config(Namespace):
    def __setattr__(self, name, value):
        if '.' in name:
            name = name.split('.')
            name, rest = name[0], '.'.join(name[1:])
            setattr(self, name, type(self)())
            setattr(getattr(self, name), rest, value)
        else:
            super().__setattr__(name, value)

    def dict(self):
        dict = {}
        for k, v in self.__dict__.items():
            if isinstance(v, Config):
                dict[k] = v.dict()
            else:
                dict[k] = v
        return dict