Я создаю код Python для чтения и управления глубоко вложенными диктофонами (в конечном счете для взаимодействия с службами JSON, однако было бы здорово иметь другие цели). Я ищу способ легко прочитать/установить/обновить значения в пределах dict, не требуя большого количества кода.
@see также Python: рекурсивно доступ к dict через атрибуты, а также доступ к индексу? - Решение Curt Hagenlocher "DotDictify" довольно красноречиво. Мне также нравится, что Бен Алман представляет для JavaScript в http://benalman.com/projects/jquery-getobject-plugin/ Было бы здорово как-то объединить два.
Исходя из примеров Curt Hagenlocher и Ben Alman, было бы замечательно, если бы на Python появилась такая возможность:
>>> my_obj = DotDictify()
>>> my_obj.a.b.c = {'d':1, 'e':2}
>>> print my_obj
{'a': {'b': {'c': {'d': 1, 'e': 2}}}}
>>> print my_obj.a.b.c.d
1
>>> print my_obj.a.b.c.x
None
>>> print my_obj.a.b.c.d.x
None
>>> print my_obj.a.b.c.d.x.y.z
None
Любая идея, если это возможно, и если да, то как изменить модификацию решения DotDictify?
В качестве альтернативы, метод get может быть выполнен для принятия точечной нотации (и добавлен дополнительный метод набора), однако обозначение объекта является более чистым.
>>> my_obj = DotDictify()
>>> my_obj.set('a.b.c', {'d':1, 'e':2})
>>> print my_obj
{'a': {'b': {'c': {'d': 1, 'e': 2}}}}
>>> print my_obj.get('a.b.c.d')
1
>>> print my_obj.get('a.b.c.x')
None
>>> print my_obj.get('a.b.c.d.x')
None
>>> print my_obj.get('a.b.c.d.x.y.z')
None
Этот тип взаимодействия был бы полезен для работы с глубоко вложенными диктофонами. Кто-нибудь знает другую стратегию (или образец фрагмента/библиотеки кода), чтобы попробовать?