mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 19:40:18 +00:00
53 lines
1.2 KiB
Python
53 lines
1.2 KiB
Python
def Counter(iterable):
|
|
a = {}
|
|
for x in iterable:
|
|
if x in a:
|
|
a[x] += 1
|
|
else:
|
|
a[x] = 1
|
|
return a
|
|
|
|
class defaultdict:
|
|
def __init__(self, default_factory) -> None:
|
|
self.default_factory = default_factory
|
|
self._a = {}
|
|
|
|
def __getitem__(self, key):
|
|
if key not in self._a:
|
|
self._a[key] = self.default_factory()
|
|
return self._a[key]
|
|
|
|
def __setitem__(self, key, value):
|
|
self._a[key] = value
|
|
|
|
def __repr__(self) -> str:
|
|
return f"defaultdict({self.default_factory}, {self._a})"
|
|
|
|
def __eq__(self, __o: object) -> bool:
|
|
if not isinstance(__o, defaultdict):
|
|
return False
|
|
if self.default_factory != __o.default_factory:
|
|
return False
|
|
return self._a == __o._a
|
|
|
|
def __iter__(self):
|
|
return iter(self._a)
|
|
|
|
def __contains__(self, key):
|
|
return key in self._a
|
|
|
|
def __len__(self):
|
|
return len(self._a)
|
|
|
|
def keys(self):
|
|
return self._a.keys()
|
|
|
|
def values(self):
|
|
return self._a.values()
|
|
|
|
def items(self):
|
|
return self._a.items()
|
|
|
|
def pop(self, *args):
|
|
return self._a.pop(*args)
|