由于Python没有内建的bitset数据结构,不过有需要自己安装的BitVector,用起来还是很方便的
安装BitVector过程同Python安装第三方模块的方法:
命令行进入目录后,输入 python setup.py install
不过由于是在windows上做的实验,安装后只能在那个目录下使用BitVector这点有点迷惑,待解决...
下面是我根据java版的BloomFilter改写的代码:
#_*_coding:utf_8_
import BitVector
import os
import sys
class SimpleHash():
def __init__(self, cap, seed):
self.cap = cap
self.seed = seed
def hash(self, value):
ret = 0
for i in range(len(value)):
ret += self.seed*ret + ord(value[i])
return (self.cap-1) & ret
class BloomFilter():
def __init__(self, BIT_SIZE=1<<25):
self.BIT_SIZE = 1 << 25
self.seeds = [5, 7, 11, 13, 31, 37, 61]
self.bitset = BitVector.BitVector(size=self.BIT_SIZE)
self.hashFunc = []
for i in range(len(self.seeds)):
self