Python空计数器比较

时间:2014-02-18 16:12:04

标签: python

有谁知道以下为False而不是True的原因?计数器不应该与多集合类似吗?任何对文档的引用都欢迎。

Counter()==Counter({'a': 0})

2 个答案:

答案 0 :(得分:5)

来自Counter documentation

  

注意:计数器主要用于处理正整数以表示运行计数;但是,注意不要不必要地排除需要其他类型或负值的用例。

因此,他们并不像多人一样;他们显式支持超出正整数的值,任何设置为0的键仍被视为数据点。

您可以通过减去空的Counter对象来显式删除0或0以下的任何计数器:

>>> from collections import Counter
>>> Counter({'a': 0}) - Counter()
Counter()
>>> Counter({'a': 0, 'b': 1, 'c': -1}) - Counter()
Counter({'b': 1})

答案 1 :(得分:4)

虽然可以使用Counter对多个集合进行建模,但在这种情况下,您可能希望这两个值相等,docs说:

  

multiset方法仅适用于具有正值的用例。输入可以是负数或零,但只创建具有正值的输出。

由于您使用了零计数,因此它不再完全像多集合一样工作。由于Counterdict的子类,Counter()Counter({'a': 0})将被视为不同。