Gibt es eine besser lesbare Möglichkeit, um zu überprüfen, ob ein in einem Diktat vergrabener Schlüssel vorhanden ist, ohne jede Ebene einzeln zu überprüfen?
Nehmen wir an, ich muss diesen Wert in einem vergrabenen Objekt erhalten (Beispiel aus Wikidata):
x = s['mainsnak']['datavalue']['value']['numeric-id']
Um sicherzustellen, dass dies nicht mit einem Laufzeitfehler endet, müssen Sie entweder jede Ebene wie folgt überprüfen:
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']
Die andere Möglichkeit, dies zu lösen, besteht darin, dies in ein try catch
Konstrukt zu packen, das meiner Meinung nach für eine so einfache Aufgabe ebenfalls ziemlich umständlich ist.
Ich suche so etwas wie:
x = exists(s['mainsnak']['datavalue']['value']['numeric-id'])
Dies wird zurückgegeben, True
wenn alle Ebenen vorhanden sind.
try except
Anweisungen hinterlassen ein ziemliches Aufblähen.