Добрый день.
Столкнулся с проблемой. Сайт отдает по API Json, но количество полей может отличаться.
Есть список полей которые мне нужны, если их нет, тогда "None"
Json я преобразую в словарь и таким образом получаю данные.
Проблема, если определенных ключей нет, то python возвращает ошибку.
x=JsonData['folder']['attrs']['music']['a']
Хотел использовать метод get но не понимаю как записать путь в словаре.
path = ('folder','attrs','music','a') ?????????????
value= JsonData.get (path,"None")
Можно конечно делать проверку для каждого пути руками.
if key in JsonData:
value =JsonData['folder']['attrs']['music']['a']
и скопипастить таких проверок по количеству переменных, но думал есть более гуманный способ записать все пути для проверок и засунуть их в массив.
типа этого
path = [('folder','attrs','music','a'),('folder','attrs','music','b'),('folder','attrs','docs','w','a'),('folder','attrs','zip','a').....]
for i in path:
value= JsonData.get (i,"None")
нагуглил решение.
если есть ключ, возвращает значение, если нет возвращает None.
даже без прверок на исключение.
import operator
from functools import reduce
path = ('folder','attrs','music','a')
value = reduce(operator.getitem, path , JsonData)