Python while 语句中的 dict keyerror(.get() 有效)

Python dict keyerror in while statement (.get() works)

在 class 我有一个嵌套的字典

tree = {"left":tree_left,"right":tree_right,"class":class,"split":split}

其中 tree_left,tree_right 也是相同形式的词典。

如果我写

 tree = self.tree
 while tree["split"]:
          do stuff

它抛出 KeyError: "split" 但写入

 tree = self.tree
 while tree.get("split"):
          do stuff

有效。我还尝试了

 tree = self.tree
 print(tree["split"])
 while tree["split"]:
          do stuff

它打印出正确的值然后抛出错误。

有什么原因吗?

tree没有split键时,tree["split"]会抛出KeyError异常,而tree.get("split") 将 return None 并且代码将毫无异常地退出 while 循环(循环条件在逻辑上将是 False)。

另一种检查 split 是否存在于您的 tree 变量中的方法是:

while "split" in tree:
    # do stuff