6. python Collections -- Counter

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

    image.png

語法:

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

    Counter是用於計算可哈希對象的字典子類。它是一個無序的集合,其中元素以字典鍵的形式存儲,並將其計數存儲爲字典值。

    計數允許爲包括零或負計數的任何整數值。Counter類與其他語言的bag或multisets類似。

    

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

    image.png

    新的空的計數器

    來自可迭代器的新計數器

    來自映射的新計數器

    來自關鍵字args的新計數器


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

    image.png

#缺少元素的數量爲零


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

    image.png

    Counter對象支持除所有字典可用的方法之外的三種方法:

    elements()

            在元素上返回一個迭代器,重複每個元素的次數。

            元素以任意順序返回。如果一個元素的計數小於1,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

    通常的字典方法可用於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版新增:增加了對一元加號,一元減號和就地多重操作的支持。



注意:

    計數器主要用於處理正整數來表示運行計數;但是,注意不要不必要地排除需要其他類型或負值的用例。

    爲了幫助解決這些用例,本節介紹了最小範圍和類型限制。

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

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

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

            update( )和subtract( ) 也是如此,它們允許輸入和輸出的負值和零值的情況。

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

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


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