Skip to content

Latest commit

 

History

History
50 lines (35 loc) · 1.16 KB

009哈希.md

File metadata and controls

50 lines (35 loc) · 1.16 KB

实现哈希

什么是Hash

哈希值应该是一个对象里不变的属性,如果对对象的哈希可以快速比较两个对象是否是一样的,一般都是转变成数字然后才能高效得比较。

怎么用哈希

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

这是本章内容,希望对你有所帮助。进入下一章