class defaultdict(dict): def __new__(cls, *args, **kwargs): if len(args) >= 1: default_factory = args[0] args = args[1:] else: default_factory = None self = dict.__new__(cls, *args, **kwargs) self.default_factory = default_factory return self def __missing__(self, key): if self.default_factory: return self.default_factory() else: raise KeyError(key) def __repr__(self): return f"defaultdict({self.default_factory}, {dict.__repr__(self)})"