Python 辞書のメンバーにドット「.」経由でアクセスできるようにするにはどうすればよいでしょうか?
たとえば、 と書く代わりにmydict['val']
、 と書きますmydict.val
。
また、ネストされた辞書にもこのようにアクセスしたいと思います。例えば
mydict.mydict2.val
参照する
mydict = { 'mydict2': { 'val': ... } }
ベストアンサー1
私はこれを常にユーティリティ ファイルに保存しています。独自のクラスでミックスインとして使用することもできます。
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'