python-3.x 如何从SimplePace初始化一个dict?

1hdlvixo  于 2023-11-20  发布在  Python
关注(0)|答案(3)|浏览(127)

问题:How to initialize a SimpleNamespace from a dict?
我的问题是相反的方向。如何从一个简单的空间初始化一个dict?

yruzcnhs

yruzcnhs1#

from types import SimpleNamespace

sn = SimpleNamespace(a=1, b=2, c=3)

vars(sn)
# returns {'a': 1, 'b': 2, 'c': 3}

sn.__dict__
# also returns {'a': 1, 'b': 2, 'c': 3}

字符串

mqxuamgl

mqxuamgl2#

直接的dict不适用于异构列表。

import json

sn = SimpleNamespace(hetero_list=['aa', SimpleNamespace(y='ll')] )
json.loads(json.dumps(sn, default=lambda s: vars(s)))

字符串
这是唯一的办法来恢复独裁。

xtupzzrd

xtupzzrd3#

我遇到了一个问题,我有一个复杂的SimplePace,里面有SimplePace,所以我需要一个递归的方法来将它转换为字典。这个要点非常有帮助,因为它递归地转换SimplePace。

def obj_to_dict(obj):
if type(obj) is dict:
    res = {}
    for k, v in obj.items():
        res[k] = obj_to_dict(v)
    return res
elif type(obj) is list:
    return [obj_to_dict(item) for item in obj]
elif type(obj) is SimpleNamespace:
    return obj_to_dict(vars(obj))
else:
    return obj

字符串

相关问题