Adicionar contadores exclui chaves
Veja abaixo, por que a implementação de+=
soprar uma chave no meu balcão original?
>>> c = Counter({'a': 0, 'b': 0, 'c': 0})
>>> c.items()
[('a', 0), ('c', 0), ('b', 0)]
>>> c += Counter('abba')
>>> c.items()
[('a', 2), ('b', 2)]
Eu acho que é falta de educação, para dizer o mínimo, há uma grande diferença entre "X foi contado 0 vezes" e "nem sequer estamos contando Xs". Parece quecollections.Counter
não é um contador, é mais como um multiset.
Mas os contadores são uma subclasse de ditado e podemos construí-los com valores zero ou negativos:Counter(a=0, b=-1)
. Se é realmente um "saco de coisas", isso não seria proibido, restringindo o init a aceitar itens iteráveis de hash?
Para confundir ainda mais as questões, osupdate
esubtract
métodos que têm comportamento diferente para+
e-
operadores. Parece que essa classe está passando por uma crise de identidade!
Um contador é um ditado ou uma bolsa?