Python添加具有负数的Counter对象失败



为什么将一个空计数器添加到另一个具有负值的计数器会导致0

from collections import Counter
a=Counter({'a':-1})
b=Counter()
print(a+b)

结果

Counter()

但是,如果添加到空计数器的计数器具有正值,则它起作用。如何保留这些负值?

Counter过滤掉计数为零或更少的键。参见文档:

每个操作都可以接受带符号计数的输入,但输出将排除计数为零或更少的结果。

但是,update方法确实保留了上述值。

from collections import Counter

a = Counter({'a':-1})
b = Counter()
a.update(b)
print(a) # Counter({'a': -1})

因为当您将计数器添加在一起时,文档中的定义会忽略结果中总数为零或更少的任何条目。

以下是文档:https://docs.python.org/3/library/collections.html#collections.Counter:~:text=几个%20数学%20运算,零%20或%20更少。

因此,这个答案是独立的,文档中写道:

提供了几个数学运算,用于组合计数器对象以生成多集(计数大于零的计数器(。加法和减法通过将相应元素的计数相加或相减来组合计数器。交集和并集返回相应计数的最小值和最大值。相等和包含比较相应的计数。每个操作都可以接受带符号计数的输入,但输出将排除计数为零或更少的结果。

最新更新