我有一些python代码抛出keyror异常。到目前为止,我还不能在操作环境之外进行复制,所以我不能在这里发布一个简化的测试用例。在
引发异常的代码在循环中迭代,如下所示:
for k in d.keys():
if condition:
del d[k]
del[k]
行抛出异常。我在它的周围添加了一个try/except
子句,并且能够确定k in d
是False,但是{}是真的。在
d
的键是老式类实例的绑定方法。在
该类实现了__cmp__
和__hash__
,所以这就是我一直关注的地方。在
Tags:
k in d.keys()
将迭代测试每个键的相等性,而k in d
使用__hash__
,因此{简单的例子是什么坏了,为了兴趣:
不要删除
d
中的项,迭代时将要删除的键存储在列表中,然后在另一个循环中删除它们:相关问题 更多 >
编程相关推荐