6. python Collections -- Counter objects

外語不好,機翻勿噴,方便回顧 (逃~

提供計數器工具以支持方便快捷的計數。 例如:

image.png


詳細用法:

class collections.Counter([iterable-or-mapping])

Counter是用於計算可哈希對象的字典子類。

它是一個無序的集合,其元素以字典鍵的形式存儲,並將其計數存儲爲字典值。

計數允許爲包括零或負計數的任何整數值。

Counter類與其他語言的bag或multisets類似。

元素從一個迭代中計數或從另一個映射(或計數器)初始化:


image.png

翻譯~:

一個新的空的計數器

一個來自迭代器的新計數器

映射中的新計數器

一個來自關鍵字args的新計數器


計數器對象有一個字典接口,只不過它們返回一個零計數而不是引發一個KeyError:

image.png

#缺少元素的數量爲零


但是,將計數設置爲零不會從計數器中刪除元素。 使用del完全刪除它:

image.png


Counter對象支持超出所有字典可用的三種方法:


elements()

將元素返回到一個迭代器,每次重複的次數與它的次數相同。

元素以任意順序返回。

如果一個元素的數量少於一個,elements()會忽略它。


image.png

0 和 -2 都小於最低一個元素的要求,所以不輸出。


most_common([n])

從最常見到最不常見的列表中,列出n個最常見的元素及其數量。

如果省略 n 或 None,most_common()返回計數器中的所有元素。

具有相同計數的元素可以任意排序:

image.png

列出同一字符重複數量前3的計數,如果不寫n,則會打印出所有相同元素的計數。


subtract([iterable-or-mapping])

元素從可迭代或從另一個映射(或計數器)中減去。

像dict.update()一樣,但減去計數而不是替換它們。

輸入和輸出都可以是零或負數。

image.png

3.2版本中的新功能

通常的字典方法可用於Counter對象,除了兩個針對計數器的工作方式不同。


fromkeys(iterable)

這個類方法沒有爲Counter對象實現。


update([iterable-or-mapping])

元素從一個迭代中計數或從另一個映射(或計數器)加入。

像dict.update()一樣,但增加了計數而不是替換它們。

此外,可迭代預計是一系列元素,而不是(鍵,值)對的序列。



處理Counter對象的常用模式:

image.png

    #所有計數的總和

    #重置所有計數

    #列出獨特元素

    #轉換爲一個集合

    #轉換爲常規字典

    #轉換爲(elem,cnt)對列表

    #從(elem,cnt)對列表中進行轉換

    #n最小公共元素

    #刪除零和負數


提供了幾個數學運算,用於組合Counter對象以產生多個集合(計數器的計數大於零)。

加法和減法通過加或減相應元素的計數來組合計數器。

相交和聯合會返回相應計數的最小值和最大值。

每個操作都可以接受帶符號計數的輸入,但輸出將排除計數爲零或更小的結果。

image.png


一元加法和減法是添加空白計數器 或 從空白計數器中減去 的快捷方式。

image.png

3.3版新增功能:增加了對一元加號,一元減號和就地多重集操作的支持。



注意:

    計數器主要用於使用正整數來表示運行計數;但是,注意不要不必要地排除需要其他類型或負值的用例。爲了幫助解決這些用例,本節介紹了最小範圍和類型限制。

    Counter類本身是一個字典子類,對其鍵和值沒有限制。這些值旨在表示計數的數字,但您可以在值字段中存儲任何內容。

    most_common()方法只要求值是可計數的。

    對於就地操作,例如c [key] + = 1,值類型只需要支持加法和減法。所以分數,浮點數和小數將會起作用並且負值被支持。

    update()和subtract()同樣適用於輸入和輸出都允許負值和零值的情況。

    multiset方法僅用於具有正值的用例。輸入可能爲負值或零,但只能創建正值的輸出。沒有類型限制,但值類型需要支持加法,減法和比較。

    elements()方法需要整數計數。它忽略零和負數。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章