有谁知道以下为False
而不是True
的原因?计数器不应该与多集合类似吗?任何对文档的引用都欢迎。
Counter()==Counter({'a': 0})
答案 0 :(得分:5)
注意:计数器主要用于处理正整数以表示运行计数;但是,注意不要不必要地排除需要其他类型或负值的用例。
因此,他们并不像多人一样;他们显式支持超出正整数的值,任何设置为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方法仅适用于具有正值的用例。输入可以是负数或零,但只创建具有正值的输出。
由于您使用了零计数,因此它不再完全像多集合一样工作。由于Counter
是dict
的子类,Counter()
和Counter({'a': 0})
将被视为不同。