许多SO帖子向您展示如何有效地检查字典中密钥的存在,例如,检查字典中是否已存在给定密钥
如何为多级密钥执行此操作?例如,如果d["a"]["b"]
是dict,我怎么能检查是否d["a"]["b"]["c"]["d"]
存在而不做像这样可怕的事情:
if "a" in d and isInstance(d["a"], dict) and "b" in d["a"] and isInstance(d["a"]["b"], dict) and ...
Run Code Online (Sandbox Code Playgroud)
是否有一些语法
if "a"/"b"/"c"/"d" in d
Run Code Online (Sandbox Code Playgroud)
我实际上使用的是:我们有jsons,使用解析为dicts,simplejson
我需要从中提取值.其中一些值嵌套了三层和四层深度; 但有时价值根本不存在.所以我想要这样的东西:
val = None if not d["a"]["b"]["c"]["d"] else d["a"]["b"]["c"]["d"] #here d["a"]["b"] may not even exist
Run Code Online (Sandbox Code Playgroud)
编辑:如果某些子项存在但不是字典,则不要崩溃,例如,d["a"]["b"] = 5
.
utd*_*mir 13
遗憾的是,没有任何内置语法或公共库来查询这样的字典.
但是,我相信最简单的(我认为它足够有效)你可以做的事情是:
d.get("a", {}).get("b", {}).get("c")
Run Code Online (Sandbox Code Playgroud)
编辑:这不常见,但有:https://github.com/akesterson/dpath-python
编辑2:示例:
>>> d = {"a": {"b": {}}}
>>> d.get("a", {}).get("b", {}).get("c")
>>> d = {"a": {}}
>>> d.get("a", {}).get("b", {}).get("c")
>>> d = {"a": {"b": {"c": 4}}}
>>> d.get("a", {}).get("b", {}).get("c")
4
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7365 次 |
最近记录: |