如何检查python中字典内的内部字典中是否存在键?

alw*_*btc 1 python dictionary

有一个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?

e4c*_*4c5 5

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"]总是会执行而不会出现错误,并且在某些情况下可能会有用,特别是在您尝试避免使用样板代码时.