collections.Counter - 我可以将单个元素添加/增加到计数器吗?

时间:2016-12-01 19:31:45

标签: python

我可以将单个元素添加/增加到计数器吗?

我从xml解析流逐个获取每个元素,因此我在这里使用的Counter总是基于1-by-1。

好的,我知道我可以这样做:

from collections import Counter
counter = Counter("abaa")

print ("counter:", counter)  #('counter:', Counter({'a': 3, 'b': 1}))

#and I can do this as well...
def track_data(counter, data):
    counter.update(Counter(data))

#let's say I am in a function that receives data one by one.
one_element_of_incoming_data = "a"
track_data(counter, one_element_of_incoming_data)
print ("counter:", counter)  #('counter:', Counter({'a': 4, 'b': 1}))

但我真正想做的是在不建立新计数器的情况下增加:

counter.increment(one_element_of_incoming_data)

并且看到我对'a'的计数上升了一个。它看起来不像Counter API,我错过了什么?

是的,我知道我可以使用defaultdict并自行增加,但我有点期待这个功能来自一个计数器。

1 个答案:

答案 0 :(得分:4)

不确定

from collections import Counter

counter = Counter()
for s in 'abcdefga':
    counter[s] += 1

通过这种方式,Counter就像defaultdict(int)一样。但是,它也有一些方便的方法,因为它可以处理事物的数量(例如,你可以将两个Counter一起添加,它有一个更方便的构造函数等。)