Advertisement
david929

Untitled

May 16th, 2022
1,026
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.62 KB | None | 0 0
  1. class dizionario:
  2.     def __init__(self, size):
  3.        
  4.         self.T = []
  5.         for _ in range(size):
  6.             self.T.append([])
  7.        
  8.         self.prime = 993319
  9.         self.a = random.randint(2, self.prime-1)
  10.         self.b = random.randint(2, self.prime-1)
  11.         self.n_keys = 0
  12.        
  13.     def insert(self, key, value):
  14.         if self.lookup(key):
  15.             return
  16.         h = self.hash(key)
  17.        
  18.         for el in self.T[h]:
  19.             if el[0] == key:
  20.                 el = (key, value)
  21.                 self.n_keys += 1
  22.                 return
  23.            
  24.         self.T[h].append((key, value))
  25.         self.n_keys += 1
  26.    
  27.     def lookup(self, key):      # return True if key is in the set, False otherwise
  28.         h=self.hash(key)
  29.        
  30.         for el in self.T[h]:
  31.             if el[0] == key:
  32.                 return True
  33.         return False
  34.            
  35.     def delete(self, key):
  36.         idx = self.search(key)
  37.         if idx is False:
  38.             return
  39.        
  40.         h=self.hash(key)
  41.         self.T[h].pop(idx)
  42.         self.n_keys -=1
  43.        
  44.     def value(self, key):
  45.         idx = self.search(key)
  46.         if idx is False:
  47.             return
  48.        
  49.         h=self.hash(key)
  50.         return self.T[h][idx][1]
  51.        
  52.     def hash(self, key):
  53.         return ((self.a*key + self.b) % self.prime) % len(self.T)
  54.    
  55.     def len(self):
  56.         return self.n_keys
  57.    
  58.     def search(self,key):
  59.         h=self.hash(key)
  60.        
  61.         for idx,el in enumerate(self.T[h]):
  62.             if el[0] == key:
  63.                 return idx
  64.         return False
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement