diff --git a/u7/hash_table.py b/u7/hash_table.py index 5e3f762..a155614 100644 --- a/u7/hash_table.py +++ b/u7/hash_table.py @@ -91,4 +91,29 @@ class HashTable: idx = self.probe(key) self.slots[idx] = (key, value) - self._size += 1 \ No newline at end of file + self._size += 1 + def __delitem__(self, key): + self._check_key(key) + idx = self.probe(key) + slot = self.slots[idx] + + if slot is not self.empty and slot is not self.deleted and slot[0] == key: + self.slots[idx] = self.deleted + self._size -= 1 + else: + raise KeyError(key) + + def __contains__(self, key): + self._check_key(key) + idx = self.probe(key) + slot = self.slots[idx] + return slot is not self.empty and slot is not self.deleted and slot[0] == key + + def __len__(self): + return self._size + + def __iter__(self): + for slot in self.slots: + if slot is not self.empty and slot is not self.deleted: + yield slot[0] + \ No newline at end of file