栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

python。对象集中的身份。和散列

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python。对象集中的身份。和散列

用于dict /
set目的的相等性取决于所定义的相等性

__eq__
。但是,要求比较相等的对象具有相同的哈希值,这就是为什么需要的原因
__hash__
。请参阅此问题进行类似的讨论。

哈希本身无法确定两个对象在字典中是否计数相同。哈希就像“快捷方式”,只能以一种方式起作用:如果两个对象具有不同的哈希,则它们肯定是不相等的;但是如果它们具有相同的哈希值,它们可能仍然不相等。

在您的示例中,您定义

__hash__
__eq__
要做其他事情。哈希仅取决于多米诺骨牌上数字的总和,但相等性取决于两个单独的数字(按顺序)。这是合法的,因为仍然存在相同的多米诺骨牌具有相同的哈希值的情况。但是,就像我上面所说的,这并不意味着等和的多米诺骨牌将被视为相等。一些不相​​等的多米诺骨牌将仍然具有相等的哈希值。但是相等性仍然由决定
__eq__
,并且
__eq__
仍然按顺序查看两个数字,因此这就是确定它们是否相等的原因。

在我看来,在您的情况下,适当的做法是同时定义这两个数字

__hash__
__eq__
依赖于 有序
对-即首先比较两个数字中较大的一个,然后比较较小的两个。这意味着2-1和1-2将被视为相同。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/640515.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号