Есть ли более читаемый способ проверить, существует ли ключ, закодированный в dict, без проверки каждого уровня независимо?
Давайте скажем, что мне нужно получить это значение в похороненном объекте (пример взята из Викидата):
x = s['mainsnak']['datavalue']['value']['numeric-id']
Чтобы убедиться, что это не заканчивается ошибкой во время выполнения, необходимо либо проверить каждый уровень следующим образом:
if 'mainsnak' in s and 'datavalue' in s['mainsnak'] and 'value' in s['mainsnak']['datavalue'] and 'nurmeric-id' in s['mainsnak']['datavalue']['value']:
x = s['mainsnak']['datavalue']['value']['numeric-id']
Другим способом, который я могу решить, это обернуть это в конструкцию try catch
, которая, как я чувствую, также довольно неудобна для такой простой задачи.
Я ищу что-то вроде:
x = exists(s['mainsnak']['datavalue']['value']['numeric-id'])
который возвращает True
, если все уровни существуют.