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

时间:2018-08-09 17:29:41

标签: python dictionary keyerror

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

for i in detected_intersections:
    print(i)

它看起来像:

sample image

包含代码:

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

与上面看起来相同:

sample image

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

sample image

sample image

如果使用代码:

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

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

sample image

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

谢谢

1 个答案:

答案 0 :(得分:0)

如果一个dict没有一个seq键,那么您将拥有KeyError。您可以通过为pop()提供默认返回值来防止这种情况:

i.pop("seq", None)