py中以对象形式访问字典

python一切皆对象,dict是object的子类。标题的意思是以.obj的 访问字典。

以下示例是针对单层的dict

类方式

class Struct:
    def __init__(self, obj):
        self.__dict__.update(obj)

# d1 = Struct(d)
# print(d1.k)

涵数的方式

def dict_to_obj(d):
    class O:
        pass
    [setattr(O, k, d[k]) for k in d]
    return O

# d  = {"k": "i", "k1": 8}
# print(dict_to_obj(d).k)

如果是两层或多层字典

采用循环或递归的方式

def _dict_to_object(d):
    class O: pass
    for _k in d:
        if type(d[_k]) == dict:
            setattr(O, _k, Struct(**d[_k]))
        else:
            setattr(O, _k, d[_k])
    return O
 
r = _dict_to_object(row)

参考 :
http://dmyz.org/archives/516

你可能感兴趣的:(py中以对象形式访问字典)