姬長信(Redy)

python – 添加计数器删除键


见下文,为什么执行=在我的原始计数器中吹掉一把钥匙?
>>> 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次”和“我们甚至不算Xs”之间存在很大差异.它看起来像集合.Counter根本不是一个计数器,它更像是一个multiset.

但是计数器是dict的子类,我们允许用零或负值构造它们:Counter(a = 0,b = -1).如果它实际上是“一包东西”,这不会被禁止,限制init接受可迭代的可迭代物品吗?

为了进一步混淆问题,counter实现更新和减去具有不同行为的方法和 – 运算符.看来这堂课正在发生身份危机!

反击是一个字典还是一个包?