Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class dizionario:
- def __init__(self, size):
- self.T = []
- for _ in range(size):
- self.T.append([])
- self.prime = 993319
- self.a = random.randint(2, self.prime-1)
- self.b = random.randint(2, self.prime-1)
- self.n_keys = 0
- def insert(self, key, value):
- if self.lookup(key):
- return
- h = self.hash(key)
- for el in self.T[h]:
- if el[0] == key:
- el = (key, value)
- self.n_keys += 1
- return
- self.T[h].append((key, value))
- self.n_keys += 1
- def lookup(self, key): # return True if key is in the set, False otherwise
- h=self.hash(key)
- for el in self.T[h]:
- if el[0] == key:
- return True
- return False
- def delete(self, key):
- idx = self.search(key)
- if idx is False:
- return
- h=self.hash(key)
- self.T[h].pop(idx)
- self.n_keys -=1
- def value(self, key):
- idx = self.search(key)
- if idx is False:
- return
- h=self.hash(key)
- return self.T[h][idx][1]
- def hash(self, key):
- return ((self.a*key + self.b) % self.prime) % len(self.T)
- def len(self):
- return self.n_keys
- def search(self,key):
- h=self.hash(key)
- for idx,el in enumerate(self.T[h]):
- if el[0] == key:
- return idx
- return False
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement