Python統(tǒng)計可散列的對象之容器Counter詳解
一、初始化Counter
Counter支持3種形式的初始化,比如提供一個數(shù)組,一個字典,或單獨鍵值對“=”式賦值。具體初始化的代碼如下所示:
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)
運(yùn)行之后,效果如下:
這種是直接通過構(gòu)造函數(shù)進(jìn)行填充。當(dāng)然,我們還可以直接構(gòu)造一個空Counter,然后通過update()函數(shù)進(jìn)行填充。
import collections a = collections.Counter() a.update(['a', 'a', 'b', 'b', 'b', 'c']) print(a)
運(yùn)行效果和上面的a一樣,這里就不上圖了,感興趣的讀者自己測試運(yùn)行。
二、遍歷Counter
通過上面初始化以及更新,我們Counter容器中存在了很多的值。因為輸出的是字典的形式,所以我們可以直接通過字典的方式進(jìn)行訪問。
import collections a = collections.Counter() a.update(['a', 'a', 'b', 'b', 'b', 'c']) for key in 'abcde': print(key, "=", a[key])
運(yùn)行之后,效果如下:
可以看到容器Counter,可以輸出空值不報錯。因為當(dāng)我們沒有找到某個值時,其默認(rèn)計數(shù)為0。
三、elements()
當(dāng)然,如果你想實現(xiàn)那種輸出沒有0值的遍歷。可以使用elements()迭代器。具體代碼如下:
import collections a = collections.Counter() a.update('caabbbc') print(list(a.elements()))
運(yùn)行之后,效果如下:
需要注意的是,elements()雖然去除了0值,但并不能保證遍歷順序。
四、most_common
most_common()函數(shù)可以生成一個序列,統(tǒng)計包含n個最長遇到的輸入值以及相應(yīng)的計數(shù)。這里,我們來實現(xiàn)統(tǒng)計一個文檔中,字母出現(xiàn)的個數(shù)。具體代碼如下:
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))
運(yùn)行之后,效果如下:
這里統(tǒng)計的英文文檔中,空格最多,達(dá)到了658個。其他的一次都是前幾最多的個數(shù)。這樣我們可以通過Counter生成一個英文文檔中字母的頻度分布,在自然語言的處理當(dāng)中。就可以完美的結(jié)合起來進(jìn)行統(tǒng)計使用。
五、算數(shù)操作
Counter容器不僅可以統(tǒng)計頻度的分布。還可以進(jìn)行一些算數(shù)運(yùn)算。比如將兩個Counter容器進(jìn)行相加進(jìn)行統(tǒng)計,亦或者相減也行。具體操作如下:
import collections c1 = collections.Counter('abcbcabds') c2 = collections.Counter('abcbcabds') print("原始值:") print(c1) print(c2) print("算數(shù)運(yùn)算后:") print(c1 + c2) print(c1 - c2) print(c1 & c2) print(c1 | c2)
運(yùn)行之后,效果如下:
到此這篇關(guān)于Python統(tǒng)計可散列的對象之容器Counter詳解的文章就介紹到這了,更多相關(guān)Python容器Counter內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Django利用LogEntry生成歷史操作實戰(zhàn)記錄
LogEntry是在后臺開發(fā)中經(jīng)常用到的模塊,它在admin是默認(rèn)開啟的。文中給大家介紹了在admin頁面上查看操作日志的方法及實戰(zhàn)代碼,感興趣的朋友跟隨小編一起看看吧2021-12-12Python直接使用plot()函數(shù)畫圖的方法實例
Python非常簡單而又非常強(qiáng)大,它的功能之一就是畫出漂亮的圖表,實現(xiàn)數(shù)據(jù)的可視化,下面這篇文章主要給大家介紹了關(guān)于Python直接使用plot()函數(shù)畫圖的相關(guān)資料,需要的朋友可以參考下2022-05-05利用Python實現(xiàn)批量下載上市公司財務(wù)報表
這篇文章主要為大家介紹了如何利用Python做個小工具,可以批量把某網(wǎng)站上的上市公司的財報下下來。文中的示例代碼講解詳細(xì),感興趣的可以動手試一試2022-03-03