提供計數器工具以支持方便快捷的計數。 例如:
語法:
class collections.Counter([iterable-or-mapping])
Counter是用於計算可哈希對象的字典子類。它是一個無序的集合,其中元素以字典鍵的形式存儲,並將其計數存儲爲字典值。
計數允許爲包括零或負計數的任何整數值。Counter類與其他語言的bag或multisets類似。
元素從一個迭代中計數或從另一個映射(或計數器)初始化:
新的空的計數器
來自可迭代器的新計數器
來自映射的新計數器
來自關鍵字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( )方法需要整數計數。它忽略零和負數。