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)
虽然我有一个字典列表 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()
:
i.pop("seq", None)