@@ -54,25 +54,13 @@ def _get_next_ind(self, ind: int) -> int:
54
54
Get next index.
55
55
56
56
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)
61
58
4
62
-
63
- Example 2:
64
- >>> hm = HashMap(5)
65
- >>> hm._get_next_ind(5)
59
+ >>> HashMap(5)._get_next_ind(5)
66
60
1
67
-
68
- Example 3:
69
- >>> hm = HashMap(5)
70
- >>> hm._get_next_ind(6)
61
+ >>> HashMap(5)._get_next_ind(6)
71
62
2
72
-
73
- Example 4:
74
- >>> hm = HashMap(5)
75
- >>> hm._get_next_ind(9)
63
+ >>> HashMap(5)._get_next_ind(9)
76
64
0
77
65
"""
78
66
return (ind + 1 ) % len (self ._buckets )
@@ -104,13 +92,11 @@ def _is_full(self) -> bool:
104
92
So we need to increase the number of buckets to avoid collisions.
105
93
106
94
>>> 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)
109
97
>>> hm._is_full()
110
98
True
111
-
112
- >>> hm = HashMap(2)
113
- >>> hm._is_full()
99
+ >>> HashMap(2)._is_full()
114
100
False
115
101
"""
116
102
limit = len (self ._buckets ) * self ._capacity_factor
@@ -145,40 +131,40 @@ def _iterate_buckets(self, key: KEY) -> Iterator[int]:
145
131
146
132
def _add_item (self , key : KEY , val : VAL ) -> None :
147
133
"""
148
- 1. Trying to add 3 elements when size is 5
134
+ Try to add 3 elements when the size is 5
149
135
>>> 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)
153
139
>>> hm
154
- HashMap(1: 10 , 2: 20 , 3: 30)
140
+ HashMap(1: 10, 2: 20, 3: 30)
155
141
156
- 2. Trying to add 3 elements when size is 5
142
+ Try to add 3 elements when the size is 5
157
143
>>> 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)
161
147
>>> hm
162
- HashMap(-5: 10 , 6: 30 , -7: 20)
148
+ HashMap(-5: 10, 6: 30, -7: 20)
163
149
164
- 3. Trying to add 3 elements when size is 1
150
+ Try to add 3 elements when size is 1
165
151
>>> 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)
169
155
>>> hm
170
156
HashMap(10: 13.2)
171
157
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
173
159
>>> hm = HashMap(5)
174
- >>> hm._add_item(1.5,10)
160
+ >>> hm._add_item(1.5, 10)
175
161
>>> hm
176
162
HashMap(1.5: 10)
177
163
178
- 5. Trying to add item with same key
164
+ 5. Trying to add an item with the same key
179
165
>>> 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)
182
168
>>> hm
183
169
HashMap(1: 20)
184
170
"""
@@ -190,23 +176,23 @@ def __setitem__(self, key: KEY, val: VAL) -> None:
190
176
"""
191
177
1. Changing value of item whose key is present
192
178
>>> 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)
195
181
>>> hm
196
182
HashMap(1: 20)
197
183
198
184
2. Changing value of item whose key is not present
199
185
>>> 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)
202
188
>>> hm
203
- HashMap(0: 20 , 1: 10)
189
+ HashMap(0: 20, 1: 10)
204
190
205
- 3. Changing value of same item multiple times
191
+ 3. Changing the value of the same item multiple times
206
192
>>> 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)
210
196
>>> hm
211
197
HashMap(1: 30)
212
198
"""
@@ -217,29 +203,26 @@ def __setitem__(self, key: KEY, val: VAL) -> None:
217
203
218
204
def __delitem__ (self , key : KEY ) -> None :
219
205
"""
220
- Example 1.
221
206
>>> 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)
225
210
>>> hm.__delitem__(3)
226
211
>>> hm
227
- HashMap(1: 10 ,2: 20)
228
-
229
- Example 2.
212
+ HashMap(1: 10, 2: 20)
230
213
>>> 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)
234
217
>>> hm.__delitem__(-5)
235
218
>>> hm
236
- HashMap(6: 30 , -7: 20)
219
+ HashMap(6: 30, -7: 20)
237
220
238
- Example 3: Trying to remove non-existing item
221
+ # Trying to remove a non-existing item
239
222
>>> 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)
243
226
>>> hm.__delitem__(4)
244
227
Traceback (most recent call last):
245
228
...
@@ -276,7 +259,7 @@ def __iter__(self) -> Iterator[KEY]:
276
259
yield from (item .key for item in self ._buckets if item )
277
260
278
261
def __repr__ (self ) -> str :
279
- val_string = " , " .join (
262
+ val_string = ", " .join (
280
263
f"{ item .key } : { item .val } " for item in self ._buckets if item
281
264
)
282
265
return f"HashMap({ val_string } )"
0 commit comments