我创建了一个程序来获取用户预定的唯一标识符,对其进行哈希处理,并将其存储在映射到用户名称的字典中。我稍后收到唯一标识符,重新发送它,并可以查找用户的名字。
我遇到的问题是,个人的9位唯一ID哈希()与其他人的号码相同。在收集了大约40个用户的数据后发生了这种情况。
这是否有共同的工作?我认为这与使用散列映射不同,因为如果我为散列ID创建一个存储桶,我将无法分辨用户是谁(无论是第一个项目还是第二个)。
编辑:
id = raw_input()
hashed_id = hash(id)
if not dictionary.has_key(hashed_id):
name = raw_input()
dictionary[hashed_id] = name
check_in_user(dictionary[hashed_id])
答案 0 :(得分:0)
我从未见过hash()
用于此目的。 hash()
应该用作数据结构,作为整个对象的简写,例如字典内部实现中的键。
我建议您为用户使用UUID(通用唯一标识符)。
import uuid
uuid.uuid4()
# UUID('d36b850c-2433-42c6-9252-6371ea3d33c2')
你将very hard pressed从UUID中获得冲突。