Dict KeyError出现在for循环中但实际上没有错误

Dict KeyError arise in for loop but actually no error

虽然我有一个字典列表 detected_intersections,其中有 236 个条目。使用代码:

for i in detected_intersections:
    print(i)

看起来像:

使用代码:

detected_intersections = detect_intersections()
for i in detected_intersections:
    if 'seq' in i:
       print(i)

看起来和上面一样:

但是当我使用 del 语句pop() 方法 删除密钥时 seq在 for 循环中,会出现 KeyError:

如果使用代码:

for i in detected_intersections:
    if 'seq' in i:
        i.pop('seq')
        print(i)

代码编译成功,但数据丢失:

我很确定列表的每个项目中都有 seq 并且它们的大小写都是正确的,我很困惑为什么会这样。

谢谢

如果 dict 中的一个没有 seq 键,您将拥有 KeyError。您可以通过为 pop():

提供默认 return 值来防止这种情况
i.pop("seq", None)