我可以将单个元素添加/增加到计数器吗?
我从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并自行增加,但我有点期待这个功能来自一个计数器。
答案 0 :(得分:4)
不确定
from collections import Counter
counter = Counter()
for s in 'abcdefga':
counter[s] += 1
通过这种方式,Counter
就像defaultdict(int)
一样。但是,它也有一些方便的方法,因为它可以处理事物的数量(例如,你可以将两个Counter
一起添加,它有一个更方便的构造函数等。)