目錄
- 一、初始化Counter
- 二、遍歷Counter
- 三、elements()
- 四、most_common
- 五、算數操作
一、初始化Counter
Counter支持3種形式的初始化,比如提供一個數組,一個字典,或單獨鍵值對“=”式賦值。具體初始化的代碼如下所示:
import collections
a = collections.Counter(['a', 'a', 'b', 'b', 'b', 'c'])
b = collections.Counter({"a": 2, "b": 3, "c": 1})
c = collections.Counter(a=2, b=3, c=1)
print(a)
print(b)
print(c)
運行之后,效果如下:

這種是直接通過構造函數進行填充。當然,我們還可以直接構造一個空Counter,然后通過update()函數進行填充。
import collections
a = collections.Counter()
a.update(['a', 'a', 'b', 'b', 'b', 'c'])
print(a)
運行效果和上面的a一樣,這里就不上圖了,感興趣的讀者自己測試運行。
二、遍歷Counter
通過上面初始化以及更新,我們Counter容器中存在了很多的值。因為輸出的是字典的形式,所以我們可以直接通過字典的方式進行訪問。
import collections
a = collections.Counter()
a.update(['a', 'a', 'b', 'b', 'b', 'c'])
for key in 'abcde':
print(key, "=", a[key])
運行之后,效果如下:

可以看到容器Counter,可以輸出空值不報錯。因為當我們沒有找到某個值時,其默認計數為0。
三、elements()
當然,如果你想實現那種輸出沒有0值的遍歷。可以使用elements()迭代器。具體代碼如下:
import collections
a = collections.Counter()
a.update('caabbbc')
print(list(a.elements()))
運行之后,效果如下:

需要注意的是,elements()雖然去除了0值,但并不能保證遍歷順序。
四、most_common
most_common()函數可以生成一個序列,統計包含n個最長遇到的輸入值以及相應的計數。這里,我們來實現統計一個文檔中,字母出現的個數。具體代碼如下:
import collections
c = collections.Counter()
with open('英文文檔.txt', 'rt') as f:
for line in f:
c.update(line.rstrip().lower())
for letter, count in c.most_common(5):
print("{}:{}".format(letter, count))
運行之后,效果如下:

這里統計的英文文檔中,空格最多,達到了658個。其他的一次都是前幾最多的個數。這樣我們可以通過Counter生成一個英文文檔中字母的頻度分布,在自然語言的處理當中。就可以完美的結合起來進行統計使用。
五、算數操作
Counter容器不僅可以統計頻度的分布。還可以進行一些算數運算。比如將兩個Counter容器進行相加進行統計,亦或者相減也行。具體操作如下:
import collections
c1 = collections.Counter('abcbcabds')
c2 = collections.Counter('abcbcabds')
print("原始值:")
print(c1)
print(c2)
print("算數運算后:")
print(c1 + c2)
print(c1 - c2)
print(c1 c2)
print(c1 | c2)
運行之后,效果如下:

到此這篇關于Python統計可散列的對象之容器Counter詳解的文章就介紹到這了,更多相關Python容器Counter內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- Docker容器化部署Python應用過程解析
- Python容器類型公共方法總結
- python 容器總結整理
- python腳本監控docker容器
- 詳細探究Python中的字典容器
- Python基礎語法之容器詳解