哈希值应该是一个对象里不变的属性,如果对对象的哈希可以快速比较两个对象是否是一样的,一般都是转变成数字然后才能高效得比较。
Python自带了build-in的hash函数,可以对字符串进行哈希,自己实现的类也可以用,不过建议实现__hash__函数否则用内置的。
object = "abc"
hash(object)
当然如果感兴趣,一定要看看Python字符串是如何实现哈希函数的。
class string:
def __hash__(self):
if not self:
return 0 # empty
value = ord(self[0]) << 7
for char in self:
value = c_mul(1000003, value) ^ ord(char)
value = value ^ len(self)
if value == -1:
value = -2
return value
我们很多算法也用到哈希,可以实现自己的字符串到数字的哈希,如下。
def my_hash(s):
result = 0
for i in s:
result += ord(i)
return result
print(my_hash("abc"))
# Print 294
这是本章内容,希望对你有所帮助。进入下一章