반응형
점 "."을 통해 Python 사전 멤버에 액세스 할 수 있도록하려면 어떻게해야합니까?
예를 들어 mydict [ 'val']
를 작성하는 대신 mydict.val
을 작성하고 싶습니다.
또한 이런 식으로 중첩 된 딕셔너리에 액세스하고 싶습니다. 예를 들면
mydict.mydict2.val
언급 할 것이다
mydict = { 'mydict2': { 'val': ... } }
해결 방법
방금 만든이 수업을 사용하여 할 수 있습니다. 이 클래스를 사용하면 다른 사전 (json 직렬화 포함) 또는 점 표기법과 같은 Map
객체를 사용할 수 있습니다. 도움을 드리고자합니다.
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]
사용 예 :
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']
참조 페이지 https://stackoverflow.com/questions/2352181
반응형
'파이썬' 카테고리의 다른 글
파이썬 Python | change text color in shell (0) | 2020.12.15 |
---|---|
파이썬 Python 오류 : ImportError : 이름 Akismet을 가져올 수 없습니다. (0) | 2020.12.14 |
파이썬 getting sheet names from openpyxl (0) | 2020.12.14 |
파이썬 Python에서 함수를 주석 처리하는 적절한 방법은 무엇입니까? (0) | 2020.12.14 |
파이썬 CSV 파일의 첫 줄 제거 (0) | 2020.12.14 |
댓글