提供計數器工具以支持方便快捷的計數。 例如:app
語法:ide
class collections.Counter([iterable-or-mapping])工具
Counter是用於計算可哈希對象的字典子類。它是一個無序的集合,其中元素以字典鍵的形式存儲,並將其計數存儲爲字典值。spa
計數容許爲包括零或負計數的任何整數值。Counter類與其餘語言的bag或multisets相似。對象
元素從一個迭代中計數或從另外一個映射(或計數器)初始化:blog
新的空的計數器排序
來自可迭代器的新計數器接口
來自映射的新計數器element
來自關鍵字args的新計數器數學
計數器對象有一個字典接口,只不過它們返回一個零計數而不是引起一個KeyError:
#缺乏元素的數量爲零
可是,將計數設置爲零不會從計數器中刪除元素。 使用del可徹底刪除它:
Counter對象支持除全部字典可用的方法以外的三種方法:
elements()
在元素上返回一個迭代器,重複每一個元素的次數。
元素以任意順序返回。若是一個元素的計數小於1,elements( )將忽略它。
0 和 -2 都小於最低一個元素的要求,因此不輸出。
most_common([n])
返回n個最多見元素及其計數的列表,從最多見到最少。
若是省略 n 或 None,則most_common( ) 返回計數器中的全部元素。
具備相同計數的元素是任意排序的:
列出同一字符重複數量前3的計數,若是不寫n,則會打印出全部相同元素的計數。
subtract([iterable-or-mapping])
從迭代或從另外一個映射(或計數器)中減去元素。與dict.update( )相似,但減去計數而不是替換它們。輸入和輸出均可以是零或負數。
一般的字典方法可用於Counter對象,除了兩個針對計數器的工做方式不一樣。
fromkeys(iterable)
Counter對象未實現此類方法。
update([iterable-or-mapping])
元素從可迭代計數器或從另外一個映射(或計數器)添加。像dict.update()同樣,但添加計數而不是替換它們。
此外,指望迭計是元素序列,而不是(鍵,值)對的序列。
處理Counter對象的經常使用模式:
#全部計數的總和
#重置全部計數
#列出獨特元素
#轉換爲一個集合
#轉換爲常規字典
#轉換爲(elem,cnt)對列表
#從(elem,cnt)對列表中進行轉換
#n最小公共元素
#刪除零和負數
提供了幾個數學運算,用於組合Counter對象以生成多個集合(計數器的計數大於零)。
加法和減法經過添加或減去相應元素的計數來組合計數器。
交集和並集返回相應計數的最小值和最大值。
每一個操做均可以接受帶符號計數的輸入,但輸出將排除計數爲零或更小的結果。
一元加法和減法是添加空白計數器 或 從空白計數器中減去 的快捷方式。
3.3版新增:增長了對一元加號,一元減號和就地多重操做的支持。
注意:
計數器主要用於處理正整數來表示運行計數;可是,注意不要沒必要要地排除須要其餘類型或負值的用例。
爲了幫助解決這些用例,本節介紹了最小範圍和類型限制。
(1)Counter類自己是一個字典子類,其鍵和值沒有限制。這些值旨在表示計數,但您能夠在值字段中存儲任何內容。
(2)most_common( )方法只要求值是可計數的。
(3)對於諸如 c[key] += 1的就地操做,值類型只須要支持加法和減法。因此分數、浮點數和小數將會起做用,而且負值被支持。
update( )和subtract( ) 也是如此,它們容許輸入和輸出的負值和零值的狀況。
(4)multiset方法僅用於具備正值的用例。輸入可能爲負值或零,但僅建立具備正值的輸出。沒有類型限制,但值類型須要支持加法,減法和比較。
(5)elements( )方法須要整數計數。它忽略零和負數。