如何使用点“”。访问字典的成员? [英] How to use a dot "." to access members of dictionary?
问题描述
例如,而不是写入 mydict ['val' ]
,我想写 mydict.val
。
d喜欢以这种方式访问嵌套的dicts。例如, mydict.mydict2.val
将引用 mydict = {'mydict2':{'val':...}}
。
谢谢Boda Cydo。
你可以使用我刚刚制作的这个类来做。使用这个类,您可以像另一个字典(包括json序列化)或点符号使用 Map
对象。我希望能帮助你:
class Map(dict):
示例:
m = Map({'first_name':'Eduardo'},last_name ='Pool',age = 24,sports = ['Soccer'])
def __init __(self, * args,** kwargs):
super(Map,self).__ init __(* args,** kwargs)
在args中的arg:
if isinstance(arg,dict):
for k,v in arg.iteritems():
self [k] = v
如果kwargs:
for k,v in kwargs.iteritems():
self [k] = v
def __getattr __(self,attr):
return self.get(attr)
def __setattr __(self, key,value)
self .__ setitem __(key,value)
def __setitem __(self,key,value):
super(Map,self).__ setitem __(key,价值)
self .__ dict __。update({key:value})
def __delattr __(self,item):
self .__ delitem __(item)
def __delitem __(self,key):
super(Map,self).__ delitem __(key)
del self .__ dict __ [key]
使用示例:
m = ({'first_name':'Eduardo'},last_name ='Pool',age = 24,sports = ['Soccer'])
#添加新的键
m.new_key ='Hello world!
#或
m ['new_key'] ='Hello world!'
打印m.new_key
打印m ['new_key']
#更新值
m.new_key ='Yay!'
#或
m ['new_key'] ='Yay!'
#删除键
del m.new_key
#或
del m ['new_key']
How do I make Python dictionary members accessible via a dot "."?
For example, instead of writing mydict['val']
, I'd like to write mydict.val
.
Also I'd like to access nested dicts this way. For example, mydict.mydict2.val
would refer to mydict = { 'mydict2': { 'val': ... } }
.
Thanks, Boda Cydo.
You can do it using this class I just made. With this class you can use the Map
object like another dictionary(including json serialization) or with the dot notation. I hope to help you:
class Map(dict):
"""
Example:
m = Map({'first_name': 'Eduardo'}, last_name='Pool', age=24, sports=['Soccer'])
"""
def __init__(self, *args, **kwargs):
super(Map, self).__init__(*args, **kwargs)
for arg in args:
if isinstance(arg, dict):
for k, v in arg.iteritems():
self[k] = v
if kwargs:
for k, v in kwargs.iteritems():
self[k] = v
def __getattr__(self, attr):
return self.get(attr)
def __setattr__(self, key, value):
self.__setitem__(key, value)
def __setitem__(self, key, value):
super(Map, self).__setitem__(key, value)
self.__dict__.update({key: value})
def __delattr__(self, item):
self.__delitem__(item)
def __delitem__(self, key):
super(Map, self).__delitem__(key)
del self.__dict__[key]
Usage examples:
m = Map({'first_name': 'Eduardo'}, last_name='Pool', age=24, sports=['Soccer'])
# Add new key
m.new_key = 'Hello world!'
# Or
m['new_key'] = 'Hello world!'
print m.new_key
print m['new_key']
# Update values
m.new_key = 'Yay!'
# Or
m['new_key'] = 'Yay!'
# Delete key
del m.new_key
# Or
del m['new_key']
这篇关于如何使用点“”。访问字典的成员?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!