Как пройти по словарю Python, избегая ошибок ключей? [дубликат]Python

Программы на Python
Anonymous
Как пройти по словарю Python, избегая ошибок ключей? [дубликат]

Сообщение Anonymous »

При анализе большого JSON некоторые ключи могут существовать только при определенных обстоятельствах, например при наличии ошибки. Нередко можно получить 200 ОК от API сервера, но затем полученный ответ содержит ошибки, которые следует проверить.
Как лучше всего с этим справиться?
Я знаю, что использование таких функций, как get(), — это один из способов обработки ошибок KeyError.

Код: Выделить всё

if json.get('errors') is not None:
do_something
Но что, если нам нужно продолжать? Это ужасно:

Код: Выделить всё

if json.get('errors') is not None:
if json.get('errors').get('code') is not None:
if json.get('errors').get('code') != 0:
this_is_bad_throw_error
Есть ли лучший способ? Например, в Ruby есть метод dig(), который по сути сжимает всю эту строку в x = dig(:errors, :code), а затем вы просто проверяете x является ли это нулевым объектом или нет; поэтому 2 строки вместо 4 (или больше, если вам нужно идти глубже).
Я использовал try-Exception раньше, чтобы поймать KeyError, но это не тот подход, который меня обязательно волнует.
Я не против внешних библиотек, но из-за местоположения, где выполняется код, это чрезвычайно выгодно придерживаться встроенных модулей.

Подробнее здесь: https://stackoverflow.com/questions/788 ... -keyerrors

Вернуться в «Python»