6. python Collections -- Counter

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

    image.png

語法:ide

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

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

    計數容許爲包括零或負計數的任何整數值。Counter類與其餘語言的bag或multisets相似。對象

    

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

    image.png

    新的空的計數器排序

    來自可迭代器的新計數器接口

    來自映射的新計數器element

    來自關鍵字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( )方法須要整數計數。它忽略零和負數。

相關文章
相關標籤/搜索