如何使Python字典成员可通过点".“访问?
例如,我想编写mydict.val
,而不是编写mydict['val']
。
另外,我想以这种方式访问嵌套的字典。例如
mydict.mydict2.val
将会引用
mydict = { 'mydict2': { 'val': ... } }
发布于 2014-05-16 06:29:40
我一直把它放在一个util文件中。你也可以在你自己的类中使用它作为混入。
class dotdict(dict):
"""dot.notation access to dictionary attributes"""
__getattr__ = dict.get
__setattr__ = dict.__setitem__
__delattr__ = dict.__delitem__
mydict = {'val':'it works'}
nested_dict = {'val':'nested works too'}
mydict = dotdict(mydict)
mydict.val
# 'it works'
mydict.nested = dotdict(nested_dict)
mydict.nested.val
# 'nested works too'
发布于 2010-03-01 02:55:04
发布于 2019-12-26 01:57:14
使用SimpleNamespace
>>> from types import SimpleNamespace
>>> d = dict(x=[1, 2], y=['a', 'b'])
>>> ns = SimpleNamespace(**d)
>>> ns.x
[1, 2]
>>> ns
namespace(x=[1, 2], y=['a', 'b'])
https://stackoverflow.com/questions/2352181
复制相似问题