Python編程:集合工具類之計(jì)數(shù)器(Counter)詳解與實(shí)踐
前言
本文繼續(xù)來盤Python內(nèi)置集合模塊,這期主要介紹其中的工具類計(jì)數(shù)器類(Counter)類的使用。我們還是采用“短平快”的模式——文字+代碼,助你多快好省的學(xué)會(huì)它,并能都收用上它。閑話少敘,開始正文——
Counter
Counter是一個(gè)dict子類,用于計(jì)數(shù)可哈希對象。它是一個(gè)集合,其中元素被存儲(chǔ)為字典鍵,它們的計(jì)數(shù)值被存儲(chǔ)為字典值。計(jì)數(shù)值可為任何整數(shù)值,包括零或負(fù)計(jì)數(shù)。Counter類類似于其他語言中的包或多集。
計(jì)數(shù)的元素來自可迭代對象或另一個(gè)初始化的映射(或計(jì)數(shù)器)。下面是Python中創(chuàng)建Counter對象的一些方式。請看示例代碼:
程序運(yùn)行結(jié)果如下所示:
Counter對象有一個(gè)字典接口,只是它們會(huì)為丟失的項(xiàng)返回一個(gè)零計(jì)數(shù),而不是引發(fā)KeyError,示例如下:
輸出結(jié)果如下:
從Counter中刪除元素
要從Counter中刪除元素,可以使用del關(guān)鍵字。請記住,將計(jì)數(shù)設(shè)置為零并不會(huì)從計(jì)數(shù)器中刪除一個(gè)元素。請看示例代碼:
輸出結(jié)果為:
如代碼所示,我們將0設(shè)置為計(jì)數(shù)器中不存在的項(xiàng)。Python將該項(xiàng)以零值添加到Counter中。在第7行中,我們使用del關(guān)鍵字完全刪除該項(xiàng)。很明顯,計(jì)數(shù)為0,并不會(huì)刪除Counter中的計(jì)數(shù)項(xiàng),而要?jiǎng)h除之,得用del命令才行。
Counter方法
Counter對象除了支持所有字典可用的方法之外,以下是其特有最常見方法:返回一個(gè)迭
1)elements():
返回迭代器,其為重復(fù)相應(yīng)元素次數(shù)與其計(jì)數(shù)值相等的迭代器。按第一次遇到的順序返回元素。如果一個(gè)元素的計(jì)數(shù)小于1,elements()將忽略它。示例如下:
輸出結(jié)果為:
2)most_common([n]):
返回n個(gè)最常見元素的列表,元素的計(jì)數(shù)大小從最大到最小。如果省略n或None, most_common()將返回計(jì)數(shù)器中的所有元素。計(jì)數(shù)相等的元素按第一次遇到的順序排列:
輸出結(jié)果為:
3)subtract([iterable-or-mapping]):
從可迭代對象或另一個(gè)映射(或計(jì)數(shù)器)中減去元素。像dict.update(),但是減去計(jì)數(shù)而不是替換它們。輸入和輸出都可能是零或負(fù)的。示例如下:
輸出結(jié)果如下:
4)兩個(gè)方法
通常的字典方法可用于Counter對象,但有兩個(gè)方法針對計(jì)數(shù)器的工作方式不同:
fromkeys(iterable):
這個(gè)類方法Counter對象沒實(shí)現(xiàn)。
update([iterable-or-mapping]):
從可迭代對象中計(jì)數(shù)元素,或從另一個(gè)映射(或計(jì)數(shù)器)中添加元素。類似dict.update(),但Counter是增加計(jì)數(shù)而不是替換它們。而且,迭代對象應(yīng)該是元素序列,而不是(鍵,值)對的序列。示例如下:
請注意下面的輸出結(jié)果:
1.1.1 數(shù)學(xué)式操作
Counter提供了幾種數(shù)學(xué)操作來組合Counter對象運(yùn)算,以生成多集(計(jì)數(shù)大于零的計(jì)數(shù)器)。加減法通過加減相應(yīng)元素的計(jì)數(shù)來合并計(jì)數(shù)器。交集和并集返回對應(yīng)計(jì)數(shù)的最小值和最大值。每個(gè)操作都可以接受帶符號計(jì)數(shù)值的輸入,但輸出將排除計(jì)數(shù)為零或更少的結(jié)果。
輸出結(jié)果類似如下:
一元加減法是與空計(jì)數(shù)器相加或與空計(jì)數(shù)器相減的快捷方式。示例如下:
輸出結(jié)果如下:
簡而言之,可利用Counter對象實(shí)現(xiàn)一些相關(guān)數(shù)據(jù)的統(tǒng)計(jì)分析。
本文小結(jié)
本篇文章主要介紹了Python內(nèi)置集合模塊的工具類Counter的使用,并結(jié)合代碼和描述,以期深入淺出的幫助你更好的理解和掌握Counter相關(guān)內(nèi)容和應(yīng)用。若是初學(xué)者,記得一定要?jiǎng)邮謱?shí)踐一把才是最佳學(xué)習(xí)模式。