diff --git a/python/collections.py b/python/collections.py index 3698fff6..05fdd03d 100644 --- a/python/collections.py +++ b/python/collections.py @@ -20,6 +20,9 @@ class defaultdict: def __setitem__(self, key, value): self._a[key] = value + def __delitem__(self, key): + del self._a[key] + def __repr__(self) -> str: return f"defaultdict({self.default_factory}, {self._a})" @@ -50,3 +53,17 @@ class defaultdict: def pop(self, *args): return self._a.pop(*args) + + def clear(self): + self._a.clear() + + def copy(self): + new_dd = defaultdict(self.default_factory) + new_dd._a = self._a.copy() + return new_dd + + def get(self, key, default): + return self._a.get(key, default) + + def update(self, other): + self._a.update(other) diff --git a/tests/70_collections.py b/tests/70_collections.py index e9fe02b7..17d39314 100644 --- a/tests/70_collections.py +++ b/tests/70_collections.py @@ -1,9 +1,17 @@ -from collections import Counter, deque +from collections import Counter, deque, defaultdict import random import pickle import gc import builtins +dd_dict_keys = sorted(defaultdict.__dict__.keys()) +d_dict_keys = sorted(dict.__dict__.keys()) +d_dict_keys.remove('__new__') +if dd_dict_keys != d_dict_keys: + print("dd_dict_keys:", dd_dict_keys) + print("d_dict_keys:", d_dict_keys) + raise Exception("dd_dict_keys != d_dict_keys") + q = deque() q.append(1) q.append(2)