您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

当您调用“如果输入字典”时会发生什么?

当您调用“如果输入字典”时会发生什么?

首先,__hash__(myNewMyClassObj)被呼叫。如果在字典中找不到具有相同哈希值的对象,则Python会假定myNewMyClassObj不在字典中。(请注意,Python要求每当__eq__两个对象的值均相等时,它们__hash__必须相同。)

如果__hash__在字典中找到一些相同的对象,则__eq__在每个对象上调用。如果__eq__对任何一个求值均相等,则myNewMyClassObj in dict_返回True。

因此,您只需要确保__eq____hash__都很快。

对于您的后续问题:是的,dict_仅存储一组等效MyClass对象(由定义__eq__)中的一个。(按照设置。)

请注意,__eq__仅在具有相同散列并分配给相同存储桶的对象上调用。此类对象的数量通常很少(dict实现可确保这一点)。因此,您仍然具有(大约)O(1)查找性能

其他 2022/1/1 18:51:31 有588人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶