【发布时间】:2010-10-27 17:50:10
【问题描述】:
我有一些抛出 KeyError 异常的 Python 代码。到目前为止我还没有能够在运行环境之外复现,所以我不能在这里发布一个简化的测试用例。
引发异常的代码是通过这样的循环迭代:
for k in d.keys():
if condition:
del d[k]
del[k] 行引发异常。我在它周围添加了一个try/except 子句,并且能够确定k in d 为假,但k in d.keys() 为真。
d 的键是旧式类实例的绑定方法。
该类实现了__cmp__ 和__hash__,所以这就是我一直关注的地方。
【问题讨论】:
-
好吧,如果你现在是什么
k导致了问题,你为什么不看看它是否存在于d.keys()和d中? -
让我澄清一下,如果您忽略迭代并仅测试字典,那么有一个键
k in d为真但k in d.keys()为假? IE。迭代与问题无关? -
你能不能也展示一下你的
__hash__函数? -
@Charles:但他没有遍历字典!
标签: python dictionary python-2.x