Counter 是字典类的一个子类可以用来统计可以查数目的对象中元素个数的。

c = Counter()                           # a new, empty counter
c = Counter('gallahad') # a new counter from an iterable
c = Counter({'red': 4, 'blue': 2}) # a new counter from a mapping
c = Counter(cats=4, dogs=8) # a new counter from keyword args

对于没有的元素进行查询时会返回 0 而不会报错。
如果要想把一个元素从计数器中移出,要使用del
与字典对象相比,计数器对象还有三个额外的方法:

  • elements():返回一个和统计结果完全一致的列表。
c = Counter(a=4, b=2, c=0, d=-2)
list(c.elements())
#['a', 'a', 'a', 'a', 'b', 'b']
  • most_common([n]):按照出现频率从高到低返回 n 个元素,同样多的元素会被随机排序。

  • subtract([iterable-or-mapping]):按照输入的参数来减掉对应的数字。

两个 Counter 对象还支持+,-,&,|等逻辑与运算。

+c                              # remove zero and negative counts
c = Counter(a=3, b=1)
d = Counter(a=1, b=2)
c + d # add two counters together: c[x] + d[x]

c - d # subtract (keeping only positive counts)

c & d # intersection: min(c[x], d[x])

c | d # union: max(c[x], d[x])