@Jordan_Belforts

Как получать значения из словаря через точку?

Здравствуйте. Скажите, пожалуйста, как можно из словаря получать значения через точку?
Например:

json_data =  {
            "name": "Terminal",
            "packageName": "application",
            "order": 20,
            "versionName": "1.37"
}

json_data.name()  #result Terminal
json_data.order()  #result 20
  • Вопрос задан
  • 145 просмотров
Решения вопроса 2
hydrugz
@hydrugz
реклама
Вот тут писали то что вы хотите

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.items():
                    self[k] = v

        if kwargs:
            for k, v in kwargs.items():
                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]

>>> json_data =  {
...             "name": "Terminal",
...             "packageName": "application",
...             "order": 20,
...             "versionName": "1.37"
... }
>>> data = Map(json_data)
>>> data.name
'Terminal'
>>> data.order
20
Ответ написан
hottabxp
@hottabxp Куратор тега Python
Миллиардер. Честно, 100 пистонов!
Реализация объектов-словарей, как в Javascript
class Dict(dict):
    def __new__(cls, *args, **kwargs):
        self = dict.__new__(cls, *args, **kwargs)
        self.__dict__ = self
        return self

json_data =  {
            "name": "Terminal",
            "packageName": "application",
            "order": 20,
            "versionName": "1.37"
}

a = Dict(json_data)

print(a.name)
print(a.packageName)
print(a.order)
print(a.versionName)

sergey@sergey-X55A:~$ /usr/bin/python3 "/home/sergey/Рабочий стол/main.py"
Terminal
application
20
1.37
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы