1
+ # Hash Map
2
+
3
+ class HashMap :
4
+ def __init__ (self ):
5
+ self .size = 6
6
+ self .map = [None ] * self .size
7
+
8
+ def _get_hash (self , key ):
9
+ hash = 0
10
+ for char in str (key ):
11
+ hash += ord (char )
12
+ return hash % self .size
13
+
14
+ def add (self , key , value ):
15
+ key_hash = self ._get_hash (key )
16
+ key_value = [key , value ]
17
+
18
+ if self .map [key_hash ] is None :
19
+ self .map [key_hash ] = list ([key_value ])
20
+ return True
21
+ else :
22
+ for pair in self .map [key_hash ]:
23
+ if pair [0 ] == key :
24
+ pair [1 ] = value
25
+ return True
26
+ self .map [key_hash ].append (key_value )
27
+ return True
28
+
29
+ def get (self , key ):
30
+ key_hash = self ._get_hash (key )
31
+ if self .map [key_hash ] is not None :
32
+ for pair in self .map [key_hash ]:
33
+ if pair [0 ] == key :
34
+ return pair [1 ]
35
+ return None
36
+
37
+ def delete (self , key ):
38
+ key_hash = self ._get_hash (key )
39
+
40
+ if self .map [key_hash ] is None :
41
+ return False
42
+ for i in range (0 , len (self .map [key_hash ])):
43
+ if self .map [key_hash ][i ][0 ] == key :
44
+ self .map [key_hash ].pop (i )
45
+ return True
46
+
47
+ def print (self ):
48
+ print ('---PHONEBOOK----' )
49
+ for item in self .map :
50
+ if item is not None :
51
+ print (str (item ))
52
+
53
+ h = HashMap ()
54
+ h .add ('Bob' , '567-8888' )
55
+ h .add ('Ming' , '293-6753' )
56
+ h .add ('Ming' , '333-8233' )
57
+ h .add ('Ankit' , '293-8625' )
58
+ h .add ('Aditya' , '852-6551' )
59
+ h .add ('Alicia' , '632-4123' )
60
+ h .add ('Mike' , '567-2188' )
61
+ h .add ('Aditya' , '777-8888' )
62
+ h .print ()
63
+ h .delete ('Bob' )
64
+ h .print ()
65
+ print ('Ming: ' + h .get ('Ming' ))
66
+
0 commit comments