Python----Python字典类型数据通过点‘.’的方式访问(python中访问字典中的值)

网友投稿 577 2022-08-23


Python----Python字典类型数据通过点‘.’的方式访问(python中访问字典中的值)

(1)对于类似如下结构类型的数据,在一定的场合下,希望类似于info.student, info.student.name, info.teacher.course.math 等递归地通过点(.)的方式调用字典的数据

info={ "student":{ "name":"zhangsan", "age":20, "male":"man" }, "teacher":{ "name":"Mr Wang", "age":25, "male":"woman", "course":{ "math":"Friday", "english":"Monday" } }}

(2)可通过自定义如下类,然后将上述字典类型的数据转换一下即可 本质是递归的将字典类型的数据转换为Dotdict类型的(即实现了__getattr__的类)

class DotDict(dict): def __init__(self, *args, **kwargs): super(DotDict, self).__init__(*args, **kwargs) def __getattr__(self, key): value = self[key] if isinstance(value, dict): value = DotDict(value) return

(3)完整代码如下:

class DotDict(dict): def __init__(self, *args, **kwargs): super(DotDict, self).__init__(*args, **kwargs) def __getattr__(self, key): value = self[key] if isinstance(value, dict): value = DotDict(value) return valueinfo={ "student":{ "name":"zhangsan", "age":20, "male":"man" }, "teacher":{ "name":"Mr Wang", "age":25, "male":"woman", "course":{ "math":"Friday", "english":"Monday" } }}dot_info=DotDict(info)print(dot_info.student)print(dot_info.student.name)print(dot_info.teacher.name)print(dot_info.teacher.course.math)

执行结果如下:

{'name': 'zhangsan', 'age': 20, 'male': 'man'}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python高级语法系列(python高级语法)
下一篇:Java数据结构常见几大排序梳理
相关文章

 发表评论

暂时没有评论,来抢沙发吧~