Agregar contadores elimina claves

Vea a continuación, ¿por qué la implementación de+= soplar una llave en mi contador 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)]

Creo que es descortés por decir lo menos, hay una gran diferencia entre "X se contó 0 veces" y "ni siquiera estamos contando Xs". Parece quecollections.Counter no es un contador en absoluto, es más como un conjunto múltiple.

Pero los contadores son una subclase de dict y se nos permite construirlos con valores cero o negativos:Counter(a=0, b=-1). Si en realidad es una "bolsa de cosas", ¿no estaría prohibido, restringiendo init para aceptar un elemento iterable de elementos que se pueden compartir?

Para confundir aún más las cosas, contra implementosupdate ysubtract métodos que tienen un comportamiento diferente al+ y- operadores ¡Parece que esta clase está teniendo una crisis de identidad!

¿Es un mostrador un dict o una bolsa?