I'm interrogating a nested dictionary using the dict.get('keyword') method. Currently my syntax is...
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")
However, sometimes one of the "parent" or "child" tags doesn't exist, and my script fails. I know using get()
I can include a default in the case the key doesn't exist of the form...
get("parent", '') or
get("parent", 'orphan')
But if I include any Null
, ''
, or empty I can think of, the chained .get("child")
fails when called on ''.get("child")
since ""
has no method .get()
.
The way I'm solving this now is by using a bunch of sequential try-except
around each .get("")
call, but that seems foolish and unpython---is there a way to default return "skip"
or "pass"
or something that would still support chaining and fail intelligently, rather than deep-dive into keys that don't exist?
Ideally, I'd like this to be a list comprehension of the form:
[m.get("gparents").get("parent").get("child") for m in M]
but this is currently impossible when an absent parent causes the .get("child")
call to terminate my program.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…