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?

questionAnswers(2)

yourAnswerToTheQuestion