溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Python中collections.Counter類(lèi)型有什么用

發(fā)布時(shí)間:2020-11-24 11:50:43 來(lái)源:億速云 閱讀:169 作者:小新 欄目:編程語(yǔ)言

小編給大家分享一下Python中collections.Counter類(lèi)型有什么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

collections.Counter 類(lèi)型可以用來(lái)給可散列的對(duì)象計(jì)數(shù),或者是當(dāng)成多重集合來(lái)使用 —— 多重集合就是集合里的元素可以出現(xiàn)多次1。

collections.Counter 類(lèi)型類(lèi)似于其它編程語(yǔ)言中的 bags 或者 multisets2。

(1)基本用法

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é)果:

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 對(duì)象,這時(shí) counter 對(duì)象中就已經(jīng)計(jì)算好當(dāng)前的詞語(yǔ)出現(xiàn)次數(shù);collections.Counter()入?yún)榭傻鷮?duì)象,比如這里的列表。接著使用 update() 方法傳入新詞語(yǔ)列表,這時(shí) counter 對(duì)象會(huì)更新計(jì)數(shù)器,進(jìn)行累加計(jì)算;最后使用 counter 對(duì)象的 most_common() 方法打印出次數(shù)排名在前 2 名的詞語(yǔ)列表。

(2)集合運(yùn)算

collections.Counter 類(lèi)型還支持集合運(yùn)算。

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é)果:

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 類(lèi)型對(duì)象。這里還演示了 Counter 對(duì)象可以使用鍵值對(duì)的方式進(jìn)行初始化操作;

  • a+b 表示并集操作,包含所有元素;

  • a-b 表示差集操作;

  • a&b 表示交集操作;

  • a|b 比較特殊,首先把所有的鍵囊括進(jìn)來(lái),然后比較兩個(gè)對(duì)象中的對(duì)應(yīng)鍵的最大值,作為新對(duì)象的值。比如 a 對(duì)象中有 '老虎': 3,b 對(duì)象中有 '老虎': 1,那么最后得到的對(duì)象是 '老虎': 3。

(3)正負(fù)值計(jì)數(shù)

Counter 類(lèi)型中的計(jì)數(shù)器還支持負(fù)值。

c = collections.Counter(x=1, y=-1)
logging.info('+c -> %s', +c)
logging.info('-c -> %s', -c)

運(yùn)行結(jié)果:

INFO - +c -> Counter({'x': 1})
INFO - -c -> Counter({'y': 1})

通過(guò)簡(jiǎn)單的 +/- 作為 Counter 類(lèi)型對(duì)象的前綴,就可以實(shí)現(xiàn)正負(fù)計(jì)數(shù)過(guò)濾。Python 的這一設(shè)計(jì)很優(yōu)雅。

以上是“Python中collections.Counter類(lèi)型有什么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI