Skip to content

Commit eeaf173

Browse files
committed
added new Hashmap code
1 parent 9619389 commit eeaf173

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed

HashMap.py

+66
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
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

Comments
 (0)