Skip to content

Commit 21f85af

Browse files
authored
Update hash_map.py
1 parent 2a29fa0 commit 21f85af

File tree

1 file changed

+48
-65
lines changed

1 file changed

+48
-65
lines changed

Diff for: data_structures/hashing/hash_map.py

+48-65
Original file line numberDiff line numberDiff line change
@@ -54,25 +54,13 @@ def _get_next_ind(self, ind: int) -> int:
5454
Get next index.
5555
5656
Implements linear open addressing.
57-
58-
Example 1:
59-
>>> hm = HashMap(5)
60-
>>> hm._get_next_ind(3)
57+
>>> HashMap(5)._get_next_ind(3)
6158
4
62-
63-
Example 2:
64-
>>> hm = HashMap(5)
65-
>>> hm._get_next_ind(5)
59+
>>> HashMap(5)._get_next_ind(5)
6660
1
67-
68-
Example 3:
69-
>>> hm = HashMap(5)
70-
>>> hm._get_next_ind(6)
61+
>>> HashMap(5)._get_next_ind(6)
7162
2
72-
73-
Example 4:
74-
>>> hm = HashMap(5)
75-
>>> hm._get_next_ind(9)
63+
>>> HashMap(5)._get_next_ind(9)
7664
0
7765
"""
7866
return (ind + 1) % len(self._buckets)
@@ -104,13 +92,11 @@ def _is_full(self) -> bool:
10492
So we need to increase the number of buckets to avoid collisions.
10593
10694
>>> hm = HashMap(2)
107-
>>> hm._add_item(1,10)
108-
>>> hm._add_item(2,20)
95+
>>> hm._add_item(1, 10)
96+
>>> hm._add_item(2, 20)
10997
>>> hm._is_full()
11098
True
111-
112-
>>> hm = HashMap(2)
113-
>>> hm._is_full()
99+
>>> HashMap(2)._is_full()
114100
False
115101
"""
116102
limit = len(self._buckets) * self._capacity_factor
@@ -145,40 +131,40 @@ def _iterate_buckets(self, key: KEY) -> Iterator[int]:
145131

146132
def _add_item(self, key: KEY, val: VAL) -> None:
147133
"""
148-
1. Trying to add 3 elements when size is 5
134+
Try to add 3 elements when the size is 5
149135
>>> hm = HashMap(5)
150-
>>> hm._add_item(1,10)
151-
>>> hm._add_item(2,20)
152-
>>> hm._add_item(3,30)
136+
>>> hm._add_item(1, 10)
137+
>>> hm._add_item(2, 20)
138+
>>> hm._add_item(3, 30)
153139
>>> hm
154-
HashMap(1: 10 ,2: 20 ,3: 30)
140+
HashMap(1: 10, 2: 20, 3: 30)
155141
156-
2. Trying to add 3 elements when size is 5
142+
Try to add 3 elements when the size is 5
157143
>>> hm = HashMap(5)
158-
>>> hm._add_item(-5,10)
159-
>>> hm._add_item(6,30)
160-
>>> hm._add_item(-7,20)
144+
>>> hm._add_item(-5, 10)
145+
>>> hm._add_item(6, 30)
146+
>>> hm._add_item(-7, 20)
161147
>>> hm
162-
HashMap(-5: 10 ,6: 30 ,-7: 20)
148+
HashMap(-5: 10, 6: 30, -7: 20)
163149
164-
3. Trying to add 3 elements when size is 1
150+
Try to add 3 elements when size is 1
165151
>>> hm = HashMap(1)
166-
>>> hm._add_item(10,13.2)
167-
>>> hm._add_item(6,5.26)
168-
>>> hm._add_item(7,5.155)
152+
>>> hm._add_item(10, 13.2)
153+
>>> hm._add_item(6, 5.26)
154+
>>> hm._add_item(7, 5.155)
169155
>>> hm
170156
HashMap(10: 13.2)
171157
172-
4. Trying to add element with key in floating value
158+
Trying to add an element with a key that is a floating point value
173159
>>> hm = HashMap(5)
174-
>>> hm._add_item(1.5,10)
160+
>>> hm._add_item(1.5, 10)
175161
>>> hm
176162
HashMap(1.5: 10)
177163
178-
5. Trying to add item with same key
164+
5. Trying to add an item with the same key
179165
>>> hm = HashMap(5)
180-
>>> hm._add_item(1,10)
181-
>>> hm._add_item(1,20)
166+
>>> hm._add_item(1, 10)
167+
>>> hm._add_item(1, 20)
182168
>>> hm
183169
HashMap(1: 20)
184170
"""
@@ -190,23 +176,23 @@ def __setitem__(self, key: KEY, val: VAL) -> None:
190176
"""
191177
1. Changing value of item whose key is present
192178
>>> hm = HashMap(5)
193-
>>> hm._add_item(1,10)
194-
>>> hm.__setitem__(1,20)
179+
>>> hm._add_item(1, 10)
180+
>>> hm.__setitem__(1, 20)
195181
>>> hm
196182
HashMap(1: 20)
197183
198184
2. Changing value of item whose key is not present
199185
>>> hm = HashMap(5)
200-
>>> hm._add_item(1,10)
201-
>>> hm.__setitem__(0,20)
186+
>>> hm._add_item(1, 10)
187+
>>> hm.__setitem__(0, 20)
202188
>>> hm
203-
HashMap(0: 20 ,1: 10)
189+
HashMap(0: 20, 1: 10)
204190
205-
3. Changing value of same item multiple times
191+
3. Changing the value of the same item multiple times
206192
>>> hm = HashMap(5)
207-
>>> hm._add_item(1,10)
208-
>>> hm.__setitem__(1,20)
209-
>>> hm.__setitem__(1,30)
193+
>>> hm._add_item(1, 10)
194+
>>> hm.__setitem__(1, 20)
195+
>>> hm.__setitem__(1, 30)
210196
>>> hm
211197
HashMap(1: 30)
212198
"""
@@ -217,29 +203,26 @@ def __setitem__(self, key: KEY, val: VAL) -> None:
217203

218204
def __delitem__(self, key: KEY) -> None:
219205
"""
220-
Example 1.
221206
>>> hm = HashMap(5)
222-
>>> hm._add_item(1,10)
223-
>>> hm._add_item(2,20)
224-
>>> hm._add_item(3,30)
207+
>>> hm._add_item(1, 10)
208+
>>> hm._add_item(2, 20)
209+
>>> hm._add_item(3, 30)
225210
>>> hm.__delitem__(3)
226211
>>> hm
227-
HashMap(1: 10 ,2: 20)
228-
229-
Example 2.
212+
HashMap(1: 10, 2: 20)
230213
>>> hm = HashMap(5)
231-
>>> hm._add_item(-5,10)
232-
>>> hm._add_item(6,30)
233-
>>> hm._add_item(-7,20)
214+
>>> hm._add_item(-5, 10)
215+
>>> hm._add_item(6, 30)
216+
>>> hm._add_item(-7, 20)
234217
>>> hm.__delitem__(-5)
235218
>>> hm
236-
HashMap(6: 30 ,-7: 20)
219+
HashMap(6: 30, -7: 20)
237220
238-
Example 3: Trying to remove non-existing item
221+
# Trying to remove a non-existing item
239222
>>> hm = HashMap(5)
240-
>>> hm._add_item(1,10)
241-
>>> hm._add_item(2,20)
242-
>>> hm._add_item(3,30)
223+
>>> hm._add_item(1, 10)
224+
>>> hm._add_item(2, 20)
225+
>>> hm._add_item(3, 30)
243226
>>> hm.__delitem__(4)
244227
Traceback (most recent call last):
245228
...
@@ -276,7 +259,7 @@ def __iter__(self) -> Iterator[KEY]:
276259
yield from (item.key for item in self._buckets if item)
277260

278261
def __repr__(self) -> str:
279-
val_string = " ,".join(
262+
val_string = ", ".join(
280263
f"{item.key}: {item.val}" for item in self._buckets if item
281264
)
282265
return f"HashMap({val_string})"

0 commit comments

Comments
 (0)