Python中的collections.Counter模組
1.collections模組介紹:
collections是Python內建的一個集合模組,提供了許多有用的集合類。該模組實現了專門的容器資料型別,提供了Python的通用內建容器,dict,list,set和tuple的替代方法。
2.counter類
官網參考:https://docs.python.org/3.6/library/collections.html#collections.Counter
Counter類的目的是用來跟蹤值出現的次數。它是一個無序的容器型別,以字典的鍵值對形式儲存,其中元素作為key,其計數作為value。計數值可以是任意的Interger(包括0和負數)。Counter類和其他語言的bags或multisets很相似。
Counter類建立方式有以下幾種:
元素從可迭代計數或從另一個對映(或計數器)初始化:
>>> c = Counter() # 建立一個Counter類
>>> c = Counter('gallahad') # 建立一個可迭代物件
>>> c = Counter({'red': 4, 'blue': 2}) # 建立一個字典物件
>>> c = Counter(cats=4, dogs=8) # 從鍵值對建立
對於counter類裡邊沒有的元素,將返回 0
>>> c = Counter(['eggs', 'ham'])
>>> c['bacon']
0
>>> c['eggs']
1
del 刪除鍵
當計數值為0時,並不意味著元素被刪除,刪除元素應當使用
>>> c['sausage'] = 0
>>> del c['sausage']
>> c
0
elements()
在元素上返回一個迭代器,重複每個元素的次數。 元素以任意順序返回。 如果元素的計數小於1,則elements()將忽略它。
>>> c = Counter(a=4, b=2, c=0, d=-2)
>>> sorted(c.elements())
['a', 'a', 'a', 'a', 'b', 'b']
most_common([n])
返回n個最常見元素及其計數的列表,計數從最大到最少。 如果省略n或None,則most_common()返回計數器中的所有元素。 具有相同計數的元素是任意排序的:
>>> Counter('abracadabra')
Counter({'a': 5, 'b': 2, 'r': 2, 'c': 1, 'd': 1})
>>> Counter('abracadabra').most_common(3)
[('a', 5), ('b', 2), ('r', 2)]
subtract() 與 update()
從迭代或從另一個對映(或Counter)中減去元素。 與dict.update()類似,但減去計數而不是替換它們。 輸入和輸出都可以是零或負數。
>>> c = Counter(a=4, b=2, c=0, d=-2)
>>> d = Counter(a=1, b=2, c=3, d=4)
>>> c.subtract(d)
>>> c
Counter({'a': 3, 'b': 0, 'c': -3, 'd': -6})
>>> c = Counter(a=4, b=2, c=0, d=-2)
>>> d = Counter(a=1, b=2, c=3, d=4)
>>> c.update(d)
>>> c
Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2})
Counter物件的常見模式:
sum(c.values()) # 計算所有values 的總數
c.clear() # 重置 counts
list(c) # 將c 中的鍵轉換為列表
set(c) # 將c 中的鍵轉換為集合
dict(c) # 將c 中的鍵值轉換為字典,c為counter
c.items() # 將c 中的鍵值轉換為(elem, cnt),與字典中使用items() 相同
Counter(dict(list_of_pairs)) # 將 (elem, cnt) 轉換為Counter物件
c.most_common()[:-n-1:-1] # 倒著列印(n-1)元素,即列印(n-1)最不常見的元素
+c # 去除0或values為負的counter
-c # 去除0和values為正的counter,並將負的values轉換為正的values
counter 物件的數學運算
提供了幾個數學運算來組合 Counter 物件以生成多個集合(計數大於零的Counter )。 加法和減法通過新增或減去相應元素的計數來組合計數器。 交集和並集返回相應計數的最小值和最大值。 每個操作都可以接受帶有符號計數的輸入,但輸出將刪除 Counter 小於1的結果。
>>> c = Counter(a=3, b=1)
>>> d = Counter(a=1, b=2)
>>> c + d # 兩個counter 對應相加
Counter({'a': 4, 'b': 3})
>>> c - d # 減法只保留正數
Counter({'a': 2})
>>> c & d # 交集,返回計數的最小的值 min(c[x], d[x])
Counter({'a': 1, 'b': 1})
>>> c | d # 並集,返回計數的最大的值 max(c[x], d[x])
Counter({'a': 3, 'b': 2})
相關文章
- Python中Collections.counter用法Python
- python中collections.Counter是什麼?Python
- python中的chardet模組Python
- Python中模組的使用Python
- Python中的abc模組Python
- Python 中argparse模組的使用Python
- Python中paramiko 模組的用法Python
- Python中operator 模組的用法Python
- Python中pathlib 模組的用法Python
- Python中itertools 模組的用法Python
- python中重要的模組--asyncioPython
- Python中模組是什麼?Python有哪些模組?Python
- Python中os模組Python
- Python中yaml模組的使用教程PythonYAML
- Python中的mechanize模組是什麼?Python
- python中的itertools模組簡單使用Python
- python 模組:itsdangerous 模組Python
- Python模組:time模組Python
- Python中os.walk()模組Python
- Python模組之urllib模組Python
- python模組之collections模組Python
- python的logging模組Python
- python的os模組Python
- Python的shutil模組Python
- Python中的包模組引用成員的方法Python
- Python 模組Python
- [Python模組學習] glob模組Python
- python中的複製copy模組怎麼使用?Python
- Python中爬蟲框架或模組的區別!Python爬蟲框架
- Python中爬蟲框架或模組的區別Python爬蟲框架
- python中re模組的使用(正規表示式)Python
- Python logging模組的使用Python
- python中numpy模組下的np.clip()的用法Python
- 『無為則無心』Python函式 — 36、Python中的模組Python函式
- Python Execl模組Python
- Python mongoHelper模組PythonGo
- Python——JSON 模組PythonJSON
- [Python] pipe模組Python