【发布时间】:2021-06-18 01:38:24
【问题描述】:
我正在一个对象中实现一个散列函数,我使用用户名散列值作为该对象的散列值,即:
class DiscordUser:
def __init__(self, username):
self.username = username
def __hash__(self):
return hash(self.username)
将此类对象添加到哈希集并将它们与构造函数的输入完全相同的用户名进行比较时会出现问题,即:
user = DiscordUser("Username#123")
if user in users_set:
# user is already in my users_set, such condition is NEVER MET, dont understand why
else:
# add user to users_set, this condition is met ALWAYS
users_set.add(user)
为什么哈希函数不能正常工作,或者我在这里做错了什么?
【问题讨论】:
-
根据您的问题
user中显示的所有代码仅在if user in users_set:之后的脚本末尾的users_set中。在这种情况下,永远不能采用第一个 if 分支。也许缺少一些代码来证明您的实际问题。
标签: python python-3.x object hash set