Counter类是一个用来统计元素频率的容器类别:
教学地址
Counter是什么?
Counter类是一个用来统计元素频率的容器类别,其是一个无序的容器类型,利用的键值对的形式存储,元素作为键,频率作为值.需要注意的是这里的频率可以为负数.
Counter的构建
Counter 提供了多种构建方式,属于符合Python风格的类别.
1 2 3 4
| >>> c = Counter() >>> c = Counter('gallahad') >>> c = Counter({'a': 4, 'b': 2}) >>> c = Counter(a=4, b=2)
|
Counter访问空缺值
Counter实现了__missing__方法,对于没有的键值,会返回0.
1 2 3 4 5 6 7
| >>> c = Counter("abcdefgab") >>> c["a"] 2 >>> c["c"] 1 >>> c["h"] 0
|
Counter的更新
增加,update()
1 2 3 4 5 6 7 8
| >>> c = Counter('which') >>> c.update('witch') >>> c['h'] 3 >>> d = Counter('watch') >>> c.update(d) >>> c['h'] 4
|
减少,subtract()
1 2 3 4 5 6 7 8
| >>> c = Counter('which') >>> c.subtract('witch') >>> c['h'] 1 >>> d = Counter('watch') >>> c.subtract(d) >>> c['a'] -1
|
Counter键的删除:del
Counter类键的删除需要 使用del方法,不是使用赋值0操作.
1 2 3 4 5 6 7 8 9
| >>> c = Counter("abcdcba") >>> c Counter({'a': 2, 'c': 2, 'b': 2, 'd': 1}) >>> c["b"] = 0 >>> c Counter({'a': 2, 'c': 2, 'd': 1, 'b': 0}) >>> del c["a"] >>> c Counter({'c': 2, 'b': 2, 'd': 1})
|
Counter返回迭代器:elements()
此方法返回一个迭代器,元素重复多少次,则迭代器中包含有多少个相同元素,并且按照字母序排序.
1 2 3 4 5
| elements()方法Python
>>> c = Counter(a=4, b=2, c=0, d=-2) >>> list(c.elements()) ['a', 'a', 'a', 'a', 'b', 'b']
|
Counter返回 TopN 列表:most_common([n])
返回一个TopN列表,如果n并没有指定,则全部返回.
1 2 3 4 5
| >>> c = Counter('abracadabra') >>> c.most_common() [('a', 5), ('r', 2), ('b', 2), ('c', 1), ('d', 1)] >>> c.most_common(3) [('a', 5), ('r', 2), ('b', 2)]
|
Counter中的算术操作与集合操作: + - & |
1 2 3 4 5 6 7 8 9 10 11 12 13
| +、-、&、|操作也可以用於Counter。其中&和|操作分別返回兩個Counter對象各元素的最小值和最大值。需要註意的是,得到的Counter對象將刪除小於1的元素。
Counter對象的算術和集合操作Python >>> c = Counter(a=3, b=1) >>> d = Counter(a=1, b=2) >>> c + d Counter({'a': 4, 'b': 3}) >>> c - d Counter({'a': 2}) >>> c & d Counter({'a': 1, 'b': 1}) >>> c | d Counter({'a': 3, 'b': 2})
|
其他操作
1 2 3 4 5 6 7 8 9
| sum(c.values()) c.clear() list(c) set(c) dict(c) c.items() Counter(dict(list_of_pairs)) c.most_common()[:-n:-1] c += Counter()
|