簡體   English   中英

遞歸地將 argparse 命名空間轉換為字典

[英]Convert argparse Namespace to dict recursively

我們這里已經有了一些非遞歸的解決方案。

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')}

問題是如果一個二級條目也是一個Namespace,我們實際得到的是一個Namespace的dict。

問題是是否有為我們准備好的方便的遞歸解決方案。

我認為沒有現成的遞歸解決方案,但這里有一個簡單的解決方案:

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'}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM