Цепные, вложенные dict () получают вызовы в python

Я опрашиваю вложенный словарь, используя метод dict.get ('keyword'). В настоящее время мой синтаксис ...

M = cursor_object_results_of_db_query

for m in M:
    X = m.get("gparents").get("parent").get("child")
    for x in X:
        y = x.get("key")

Однако, иногда один из «родительских» или «дочерних» тегов не существует, и мой скрипт завершается ошибкой. Я знаю, используя get(), я могу включить значение по умолчанию, если ключ не существует в форме ...

get("parent", '') or
get("parent", 'orphan') 

Но если я включу какие-нибудь Null, '' или пустые, которые я могу придумать, цепочка .get("child") завершится неудачно при вызове на ''.get("child"), так как "" не имеет метода .get().

Теперь я решаю эту проблему, используя связку последовательных try-except вокруг каждого вызова .get(""), но это кажется глупым и непифонным - есть ли способ возврата по умолчанию "skip" или "pass" ] или что-то, что по-прежнему будет разумно поддерживать цепочку и давать сбой, а не углубляться в несуществующие ключи?

В идеале, я бы хотел, чтобы это было понимание списка:

[m.get("gparents").get("parent").get("child") for m in M]

, но в настоящее время это невозможно, когда отсутствующий родитель вызывает вызов .get("child") для завершения моей программы.

24
задан totooooo 8 August 2019 в 18:56
поделиться