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
在 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