Skip to content

Commit 06cf0de

Browse files
committed
-
1 parent 861e4dd commit 06cf0de

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

source_py2/python_toolbox/nifty_collections/frozen_counter.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ def __init__(self, iterable=None, **kwargs):
4343
self._dict[element] = self_get(element, 0) + 1
4444
if kwargs:
4545
self._dict.update(kwargs)
46+
47+
for key, value in self.items():
48+
if value == 0:
49+
del self._dict[key]
4650

4751

4852
__getitem__ = lambda self, key: self._dict.get(key, 0)
@@ -159,7 +163,7 @@ def __or__(self, other):
159163
'''
160164
if not isinstance(other, FrozenCounter):
161165
return NotImplemented
162-
result = Counter()
166+
result = collections.Counter()
163167
for element, count in self.items():
164168
other_count = other[element]
165169
new_count = other_count if count < other_count else count
@@ -179,7 +183,7 @@ def __and__(self, other):
179183
'''
180184
if not isinstance(other, FrozenCounter):
181185
return NotImplemented
182-
result = Counter()
186+
result = collections.Counter()
183187
for element, count in self.items():
184188
other_count = other[element]
185189
new_count = count if count < other_count else other_count

source_py2/test_python_toolbox/test_nifty_collections/test_lazy_tuple/test_frozen_counter.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,20 @@ def test():
4141
FrozenCounter({'a': 5, 'r': 2, 'b': 2, 'c': 1, 'd': 1,
4242
'meow': 9,})
4343

44+
assert frozen_counter.most_common() == \
45+
collections.Counter(frozen_counter).most_common()
46+
47+
assert frozen_counter + frozen_counter == FrozenCounter('abracadabra'*2)
48+
assert frozen_counter - frozen_counter == FrozenCounter()
49+
assert frozen_counter - FrozenCounter('a') == FrozenCounter('abracadabr')
50+
assert frozen_counter - FrozenCounter('a') == FrozenCounter('abracadabr')
51+
assert frozen_counter | FrozenCounter('a') == frozen_counter
52+
assert frozen_counter | frozen_counter == \
53+
frozen_counter | frozen_counter | frozen_counter == \
54+
frozen_counter
55+
assert frozen_counter & FrozenCounter('a') == FrozenCounter('a')
56+
assert frozen_counter & frozen_counter == \
57+
frozen_counter & frozen_counter & frozen_counter == \
58+
frozen_counter
59+
4460
assert repr(frozen_counter).startswith('FrozenCounter(')

0 commit comments

Comments
 (0)