collections.py 622 B

12345678910111213141516171819202122232425
  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. class defaultdict(dict):
  10. def __init__(self, default_factory, *args):
  11. super().__init__(*args)
  12. self._enable_instance_dict()
  13. self.default_factory = default_factory
  14. def __missing__(self, key):
  15. self[key] = self.default_factory()
  16. return self[key]
  17. def __repr__(self) -> str:
  18. return f"defaultdict({self.default_factory}, {super().__repr__()})"
  19. def copy(self):
  20. return defaultdict(self.default_factory, self)