collections.py 667 B

123456789101112131415161718192021222324252627
  1. def Counter(iterable):
  2. a = {}
  3. for x in iterable:
  4. if x in a:
  5. a[x] += 1
  6. else:
  7. a[x] = 1
  8. return a
  9. from __builtins import _enable_instance_dict
  10. class defaultdict(dict):
  11. def __init__(self, default_factory, *args):
  12. super().__init__(*args)
  13. _enable_instance_dict(self)
  14. self.default_factory = default_factory
  15. def __missing__(self, key):
  16. self[key] = self.default_factory()
  17. return self[key]
  18. def __repr__(self) -> str:
  19. return f"defaultdict({self.default_factory}, {super().__repr__()})"
  20. def copy(self):
  21. return defaultdict(self.default_factory, self)