資訊內(nèi)容
了解Python的collections.Counter類型
mgx少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺
collections.Counter 類型可以用來給可散列的對象計(jì)數(shù),或者是當(dāng)成多重集合來使用 —— 多重集合就是集合里的元素可以出現(xiàn)多次1。mgx少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺
collections.Counter 類型類似于其它編程語言中的 bags 或者 multisets2。mgx少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺
(1)基本用法mgx少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺
counter = collections.Counter(['生物', '印記', '考古學(xué)家', '生物', '棗', '印記']) logging.info('counter -> %s', counter) counter.update(['化石', '果實(shí)', '棗', '生物']) logging.info('counter -> %s', counter) most = counter.most_common(2) logging.info('most -> %s', most)運(yùn)行結(jié)果:mgx少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺
INFO - counter -> Counter({'生物': 2, '印記': 2, '考古學(xué)家': 1, '棗': 1}) INFO - counter -> Counter({'生物': 3, '印記': 2, '棗': 2, '考古學(xué)家': 1, '化石': 1, '果實(shí)': 1}) INFO - most -> [('生物', 3), ('印記', 2)]示例程序中,首先使用 collections.Counter() 初始化 counter 對象,這時(shí) counter 對象中就已經(jīng)計(jì)算好當(dāng)前的詞語出現(xiàn)次數(shù);collections.Counter()入?yún)榭傻鷮ο螅热邕@里的列表。接著使用 update() 方法傳入新詞語列表,這時(shí) counter 對象會(huì)更新計(jì)數(shù)器,進(jìn)行累加計(jì)算;**后使用 counter 對象的 most_common() 方法打印出次數(shù)排名在前 2 名的詞語列表。mgx少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺
(2)集合運(yùn)算mgx少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺
collections.Counter 類型還支持集合運(yùn)算。mgx少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺
a = collections.Counter({'老虎': 3, '山羊': 1}) b = collections.Counter({'老虎': 1, '山羊': 3}) logging.info('a -> %s', a) logging.info('b -> %s', b) logging.info('a+b -> %s', a + b) logging.info('a-b -> %s', a - b) logging.info('a&b -> %s', a & b) logging.info('a|b -> %s', a | b)運(yùn)行結(jié)果:mgx少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺
INFO - a -> Counter({'老虎': 3, '兔子': 2, '山羊': 1}) INFO - b -> Counter({'山羊': 3, '老虎': 1}) INFO - a+b -> Counter({'老虎': 4, '山羊': 4, '兔子': 2}) INFO - a-b -> Counter({'老虎': 2, '兔子': 2}) INFO - a&b -> Counter({'老虎': 1, '山羊': 1}) INFO - a|b -> Counter({'老虎': 3, '山羊': 3, '兔子': 2})示例中的 a 與 b 都是 Counter 類型對象。這里還演示了 Counter 對象可以使用鍵值對的方式進(jìn)行初始化操作;mgx少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺
a+b 表示并集操作,包含所有元素;mgx少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺
a-b 表示差集操作;mgx少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺
a&b 表示交集操作;mgx少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺
a|b 比較特殊,首先把所有的鍵囊括進(jìn)來,然后比較兩個(gè)對象中的對應(yīng)鍵的**大值,作為新對象的值。比如 a 對象中有 '老虎': 3,b 對象中有 '老虎': 1,那么**后得到的對象是 '老虎': 3。mgx少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺
(3)正負(fù)值計(jì)數(shù)mgx少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺
Counter 類型中的計(jì)數(shù)器還支持負(fù)值。mgx少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺
c = collections.Counter(x=1, y=-1) logging.info('+c -> %s', +c) logging.info('-c -> %s', -c)運(yùn)行結(jié)果:mgx少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺
INFO - +c -> Counter({'x': 1}) INFO - -c -> Counter({'y': 1})通過簡單的 +/- 作為 Counter 類型對象的前綴,就可以實(shí)現(xiàn)正負(fù)計(jì)數(shù)過濾。Python 的這一設(shè)計(jì)很優(yōu)雅。mgx少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺
相關(guān)免費(fèi)學(xué)習(xí)推薦:python視頻教程mgx少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺
以上就是了解Python的collections.Counter類型的詳細(xì)內(nèi)容,更多請關(guān)注少兒編程網(wǎng)其它相關(guān)文章!mgx少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺
- 上一篇
mongodb怎么創(chuàng)建賬號密碼?
簡介mongodb創(chuàng)建賬號密碼的方法:創(chuàng)建一個(gè)數(shù)據(jù)庫新用戶用db.createUser()方法,如果用戶存在則返回一個(gè)用戶重復(fù)錯(cuò)誤。語法:db.createUser(user, writeConcern)user這個(gè)文檔創(chuàng)建關(guān)于用戶的身份認(rèn)證和訪問信息;writeConcern這個(gè)文檔描述保證
- 下一篇
如何解決mysq無法啟動(dòng)報(bào)1067錯(cuò)誤
簡介解決mysq無法啟動(dòng)報(bào)1067錯(cuò)誤的方法:找到mysql安裝目錄下的my.ini文件,將里面的datadir的路徑修改為安裝目錄下Data文件夾的路徑,然后保存重啟就可以了。示例如下:修改之前:修改之后:重新啟動(dòng)mysql更多Python知識,請關(guān)注:Python自學(xué)網(wǎng)!!
