Я пытаюсь получить значения из файла JSON и сохранить его в словаре Python.
Я хочу присвоить значения для того, что когда-либо было доступно из ключей, которые я даю, и для тех, которые недоступны, я хочу сохранить как «Нет»
Я попробовал следующее,
try:
dataDict['syn']= results['synonyms']
dataDict['reactivity']= results['crossReactivity']
dataDict['Temp']= results['storageTemp']
dataDict['catNum']= results['catalogNum']
dataDict['shipping']= results['shippingInstructions']
except KeyError as e:
dataDict[e.args[0]] = "None"
sa = f"""
synonyms: {dataDict['syn']}
crossReactivity: {dataDict['reactivity']}
storageTemp: {dataDict['Temp']}
catalogNum: {dataDict['catNum']}
shippingInstructions: {dataDict['shipping']}
"""
print (sa)
Я получаю следующий вывод,
synonyms: None
crossReactivity:
storageTemp:
catalogNum:
shippingInstructions:
Если «синонимы» недоступны в файле JSON, «Нет» назначается dataDict['syn'], но остальные операторы игнорируются.
Как выполнить остальные задания, не записывая все в отдельные попытки и исключения?
вы должны использовать dict.get(key, default_value)
Отвечает ли это на ваш вопрос? Вернуть None, если ключ словаря недоступен
(была ошибка копирования и вставки, я исправил ее. Мне нужно получить около 54 значений, подобных этому. Так есть ли какой-либо другой способ написания кода или автоматизации вместо написания операторов if-else или try-за исключением всех 54 чехлы? Спасибо.
@Guru Здесь и в приведенной выше ссылке вы найдете общее количество 13
ответов на этот вопрос. Вам никто из них не помог?
@Tomerikoo частично ответил. Для извлечения каталожного номера, если мне нужно написать results['response']['docs'][0]['catalogNum'], так как это dict dicts, как мне использовать его с .get()?. Извините, если это глупый вопрос. Спасибо.
Вы можете использовать .get(), которая принимает значение по умолчанию:
dataDict = {}
results = {"synonyms": "foo", "storageTemp": 15}
dataDict['syn'] = results.get('synonyms', None)
dataDict['reactivity'] = results.get('crossReactivity', None)
dataDict['Temp'] = results.get('storageTemp', None)
dataDict['catNum'] = results.get('catalogNum', None)
dataDict['shipping'] = results.get('shippingInstructions', None)
print(dataDict)
Вне:
{'shipping': None, 'catNum': None, 'reactivity': None, 'syn': 'foo', 'Temp': 15}
Извините, если это нубский вопрос, так как это файл JSON, данные находятся в dict of dicts и dict of list of dicts, все смешано. Итак, как мне написать для этого запроса «результаты ['response']['docs'][0]['catalogNum']" с помощью .get()?
(stackoverflow.com/a/65385965/10367459) ответил на мой предыдущий комментарий.
сначала я вижу
(
в вашем коде перед результатами - это нужно? тогда я бы написал это в цикле. нравитсяif data availible
поместите это в диктофонelse
не поместите ни одного.