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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 康乃馨,原名:香石竹,拉丁文名:Dianthus caryophyllus.又名:狮头石竹、麝香石竹、大花石竹,拉...
    凌兮儿_阅读 334评论 7 4
  • 这是来到南方的第四年,家乡已入春,记得昨天家乡的朋友还问我这边是不是已经很热了。说实话,第四年了,我依旧不喜欢南...
    DR涂妖阅读 522评论 0 2
  • 如果时间可以重来,是否当初做抉择有所更改。如果当初选择不同,现在的结局又当如何,可惜这些如果只能在假想中,不可能成...
    甜心柠檬阅读 242评论 0 0
  • 【日精进打卡第10天】 【知~学习】 《六项精进》2遍 共15遍 《大学》3遍 共25遍 【经典名句分享】 工欲善...
    王丽丽1阅读 140评论 0 0