1
1
# Hash Map
2
2
3
3
class 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
7
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
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
13
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 ]
17
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
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
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
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
36
37
- def delete (self , key ):
38
- key_hash = self ._get_hash (key )
37
+ def delete (self , key ):
38
+ key_hash = self ._get_hash (key )
39
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
- 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
47
54
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 ))
53
60
54
61
h = HashMap ()
55
62
h .add ('Bob' , '567-8888' )
@@ -64,4 +71,4 @@ def print(self):
64
71
h .delete ('Bob' )
65
72
h .print ()
66
73
print ('Ming: ' + h .get ('Ming' ))
67
-
74
+ print ( h . keys ())
0 commit comments