11# Hash Map
22
33class HashMap :
4- def __init__ (self ):
5- self .size = 6
6- self .map = [None ] * self .size
4+ def __init__ (self ):
5+ self .size = 6
6+ self .map = [None ] * self .size
77
8- def _get_hash (self , key ):
9- hash = 0
10- for char in str (key ):
11- hash += ord (char )
12- return hash % self .size
8+ def _get_hash (self , key ):
9+ hash = 0
10+ for char in str (key ):
11+ hash += ord (char )
12+ return hash % self .size
1313
14- def add (self , key , value ):
15- key_hash = self ._get_hash (key )
16- key_value = [key , value ]
14+ def add (self , key , value ):
15+ key_hash = self ._get_hash (key )
16+ key_value = [key , value ]
1717
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
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
2828
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
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
3636
37- def delete (self , key ):
38- key_hash = self ._get_hash (key )
37+ def delete (self , key ):
38+ key_hash = self ._get_hash (key )
3939
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- return False
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+ return False
47+
48+ def keys (self ):
49+ arr = []
50+ for i in range (0 , len (self .map )):
51+ if self .map [i ]:
52+ arr .append (self .map [i ][0 ])
53+ return arr
4754
48- def print (self ):
49- print ('---PHONEBOOK----' )
50- for item in self .map :
51- if item is not None :
52- print (str (item ))
55+ def print (self ):
56+ print ('---PHONEBOOK----' )
57+ for item in self .map :
58+ if item is not None :
59+ print (str (item ))
5360
5461h = HashMap ()
5562h .add ('Bob' , '567-8888' )
@@ -64,4 +71,4 @@ def print(self):
6471h .delete ('Bob' )
6572h .print ()
6673print ('Ming: ' + h .get ('Ming' ))
67-
74+ print ( h . keys ())
0 commit comments