Чи є більш зрозумілий спосіб перевірити, чи існує ключ, закопаний у дикт, без перевірки кожного рівня самостійно?
Скажімо, мені потрібно отримати це значення в захороненому об’єкті (приклад взято з Вікіданих):
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
якщо існують усі рівні.
try except
твердження залишать досить суцільний.