有一个python字典:
a = {b:{c:{"x":1, "y":2, "z":3}}}
Run Code Online (Sandbox Code Playgroud)
我想知道是否a[b][c]["z"]存在了,但我不知道是否a[b][c]或a[b]任何存在.
所以,如果我这样做:
if "z" in a[b][c]:
Run Code Online (Sandbox Code Playgroud)
我可能会得到一个"key c doesn't exist in a[b]"或"key b doesn't exist in a"错误.
在这种情况下如何正确检查[b] [c]中是否存在z?
python方式根本不打扰检查.
try:
value = a[b][c]["z"]
# do something with value
except KeyError:
print 'Sorry wrong key'
Run Code Online (Sandbox Code Playgroud)
在这里,字典中可能缺少a,b,"z"的任何组合,但它们都将被异常处理程序捕获.OTH,存在确切密钥的情况将导致其余代码被执行.
您可能还想考虑使用defaultdict
第一个参数提供default_factory属性的初始值; 它默认为None.所有剩余的参数都被视为传递给dict构造函数,包括关键字参数.
这样可以确保符号a[b][c]["z"]总是会执行而不会出现错误,并且在某些情况下可能会有用,特别是在您尝试避免使用样板代码时.