Добавление счетчиков удаляет ключи
Смотрите ниже, почему реализация+=
сдуть ключ в моей оригинальной стойке?
>>> 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)]
Я думаю, что это, по меньшей мере, невежливо, есть большая разница между "X было подсчитано 0 раз" и "мы даже не считаем X". Это похоже наcollections.Counter
это вовсе не счетчик, это больше похоже на мультимножество.
Но счетчики - это подкласс dict и мы можем построить их с нулевыми или отрицательными значениями:Counter(a=0, b=-1)
, Если это на самом деле «мешок вещей», разве это не будет запрещено, ограничивая init для принятия итерируемых хэшируемых элементов?
Чтобы еще больше запутать дело, встречные инструментыupdate
а такжеsubtract
методы, которые имеют различное поведение+
а также-
операторы. Кажется, у этого класса кризис идентичности!
Счетчик - это сумка или сумка?