Chr*_*Lee 7 python dictionary python-2.x
我有一些python代码抛出KeyError异常.到目前为止,我还没有能够在操作环境之外重现,所以我不能在这里发布一个简化的测试用例.
引发异常的代码正在迭代循环,如下所示:
for k in d.keys():
if condition:
del d[k]
Run Code Online (Sandbox Code Playgroud)
该del[k]行抛出异常.我try/except在它周围添加了一个条款,并且能够确定它k in d是假的,但是k in d.keys()是真的.
关键d是旧式类实例的绑定方法.
该类实现了__cmp__和__hash__,因此,这就是我一直专注我的注意.
感兴趣的简单例子:
>>> count = 0
>>> class BrokenHash(object):
... def __hash__(self):
... global count
... count += 1
... return count
...
... def __eq__(self, other):
... return True
...
>>> foo = BrokenHash()
>>> bar = BrokenHash()
>>> foo is bar
False
>>> foo == bar
True
>>> baz = {bar:1}
>>> foo in baz
False
>>> foo in baz.keys()
True
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1084 次 |
| 最近记录: |