Issue #23509: Speed up Counter operators
(Based on patch by Serhiy Storchaka.)
This commit is contained in:
parent
3d1151d2c0
commit
4c97a62ae3
|
@ -753,14 +753,22 @@ class Counter(dict):
|
|||
|
||||
def __pos__(self):
|
||||
'Adds an empty counter, effectively stripping negative and zero counts'
|
||||
return self + Counter()
|
||||
result = Counter()
|
||||
for elem, count in self.items():
|
||||
if count > 0:
|
||||
result[elem] = count
|
||||
return result
|
||||
|
||||
def __neg__(self):
|
||||
'''Subtracts from an empty counter. Strips positive and zero counts,
|
||||
and flips the sign on negative counts.
|
||||
|
||||
'''
|
||||
return Counter() - self
|
||||
result = Counter()
|
||||
for elem, count in self.items():
|
||||
if count < 0:
|
||||
result[elem] = 0 - count
|
||||
return result
|
||||
|
||||
def _keep_positive(self):
|
||||
'''Internal method to strip elements with a negative or zero count'''
|
||||
|
|
Loading…
Reference in New Issue