Python數據結構與算法(3)---統計可散列的對象Counter

      網友投稿 788 2025-04-01

      目錄

      前言

      初始化Counter

      遍歷Counter

      elements()

      most_common

      算數操作

      前言

      Counter是一個容器,可以跟蹤等效值增加的次數。這個類可以用來實現其他語言中常用包或多集合數據結構實現的算法。

      Python數據結構與算法(3)---統計可散列的對象Counter

      本篇,將詳細介紹容器Counter的使用方式。

      初始化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 容器 數據結構

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel只粘貼文本的快捷鍵是什么(excel只復制文本的快捷鍵)
      下一篇:抽象與類
      相關文章
      亚洲男人电影天堂| 亚洲成a人片7777| 亚洲熟女精品中文字幕| 亚洲图片校园春色| 亚洲男人电影天堂| 亚洲国产成a人v在线| 亚洲免费闲人蜜桃| 亚洲日本国产精华液| 亚洲最大视频网站| 亚洲国产成+人+综合| 亚洲国产成人精品无码一区二区| 亚洲短视频在线观看| 91亚洲自偷在线观看国产馆| 亚洲欧洲日韩在线电影| 亚洲依依成人精品| 中文字幕 亚洲 有码 在线| 国产精品亚洲综合久久| 亚洲色大成网站www永久男同 | 国产成人精品日本亚洲专区61| 亚洲一区二区三区乱码A| 国产亚洲精品看片在线观看 | 亚洲性色AV日韩在线观看| 亚洲欧美成aⅴ人在线观看| 亚洲hairy多毛pics大全| 亚洲AV色欲色欲WWW| 国产亚洲视频在线| 亚洲精品色婷婷在线影院| 日本亚洲国产一区二区三区| 亚洲大成色www永久网站| 亚洲高清在线观看| 亚洲第一成年人网站| 亚洲精品123区在线观看| 亚洲国产成人精品无码区花野真一 | 日本亚洲国产一区二区三区 | 久久国产精品亚洲综合| 亚洲黄网站wwwwww| 亚洲国产成a人v在线观看| 亚洲丰满熟女一区二区哦| 亚洲人成电影在线播放| 亚洲精品乱码久久久久久| 日韩精品亚洲人成在线观看 |