【发布时间】:2013-01-07 04:59:36
【问题描述】:
我正在使用 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()。
我现在解决这个问题的方法是在每个.get("") 调用周围使用一堆连续的try-except,但这似乎很愚蠢和不符合标准——有没有办法默认返回"skip" 或@987654337 @ 或者仍然支持链接和智能失败的东西,而不是深入研究不存在的键?
理想情况下,我希望这是对表单的列表理解:
[m.get("gparents").get("parent").get("child") for m in M]
但是当缺少父级导致.get("child") 调用终止我的程序时,这目前是不可能的。
【问题讨论】:
-
我在这里没有看到任何
requests的具体内容。您是在谈论 JSON 响应吗?这些是普通的 python 字典,它们的使用与requests库是分开的。 -
我没有意识到那是普通的 python dict()。抱歉,更新。
-
另见(python dpath): stackexchange.com/search?q=dpath%20python 和 stackoverflow.com/a/16508328/42223
-
您是否在询问一种用于 Python 的空合并运算符(想到 C#:kodify.net/csharp/operators/null-coalescing-operator)
标签: python dictionary list-comprehension