Nikita Smetanin <nikitozzz...@gmail.com> added the comment:

@xtreak I agree, also, this behavior is stated in documentation, but it's quite 
inconsistent in many ways, like in the following examples:
Counter(a=-1) + Counter(a=-2) produces empty Counter() instead of Counter(a=-2) 
which is unexpected, but 
Counter(a=-1) + Counter(a=2) produces correct result Counter(a=1). The same is 
with in-place operators.

That makes no sense.

It's clear that in-place addition, for example, isn't a good place to remove 
negative elements which wasn't involved in this operation at all. The only 
possible optimization here (if we don't want to change the behavior) is to keep 
track of positive / non-positive elements in a separate set.

The better solution could be in providing two classes — Counter for any 
(signed) values with consistent operations and MultisetCounter (e.g.) or 
specific methods (like .multiset_add) for positive-only values and 
positive-checks.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue36380>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to