您好,登錄后才能下訂單哦!
Python中如何找出序列中出現(xiàn)次數(shù)最多的元素,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
前言:有一個(gè)元素序列,想知道在序列中出現(xiàn)次數(shù)最多的元素是什么?
collections模塊中國(guó)的Counter類正是為此類問(wèn)題而設(shè)計(jì)的。它甚至有一個(gè)非常方便的most_common()方法可以告訴我們答案??梢越oCounter對(duì)象提供任何可哈希的對(duì)象序列作為輸入。
實(shí)例:假設(shè)一個(gè)列表,其中有一些列的單詞,我們想找出哪些單詞出現(xiàn)的最為頻繁:
from collections import Counter words=[ 'a','b','c','d','e','f', 'a','b','c','d','e','f', 'a','b','c', 'a','b', 'a' ] #利用Counter統(tǒng)計(jì)每個(gè)元素出現(xiàn)的個(gè)數(shù) words_counts=Counter(words) #出現(xiàn)次數(shù)最多的3個(gè)元素 top_three=words_counts.most_common(3) #返回元素和出現(xiàn)次數(shù) print(top_three) #Counter底層是一個(gè)字典,可以在元素和他們出現(xiàn)的次數(shù)之間做映射,例如: #輸出元素【f】出現(xiàn)的次數(shù) print(words_counts['f']) #如果想手動(dòng)增加計(jì)數(shù)個(gè)數(shù),只需要簡(jiǎn)單的自增 words_counts['f']+=1 print(words_counts['f']) #如果想手動(dòng)增加計(jì)數(shù)個(gè)數(shù),還可以使用update()方法: #只針對(duì)元素【f】增加一次計(jì)數(shù) words_counts.update('f') print(words_counts['f']) #為所有計(jì)數(shù)增加一次 morewords=[ 'a','b','c','d','e','f' ] words_counts.update(morewords) print(words_counts['f'])
運(yùn)行結(jié)果:
[('a', 5), ('b', 4), ('c', 3)] 2 3 4 5
Counter對(duì)象另一個(gè)不為人知的特性,那就是他們可以輕松地同各種數(shù)學(xué)運(yùn)算操作結(jié)合起來(lái)使用。
from collections import Counter words1=[ 'a','b','c','d','e','f', 'a','b','c','d','e','f', 'a','b','c', 'a','b', 'a' ] words2=[ 'a','b','c','d','e','f', 'a','b','c', 'a','b', 'a' ] one=Counter(words1) two=Counter(words2) print(one) print(two) three=one+two print(three) four=one-two print(four)
運(yùn)行結(jié)果:
Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 2, 'f': 2}) Counter({'a': 4, 'b': 3, 'c': 2, 'd': 1, 'e': 1, 'f': 1}) Counter({'a': 9, 'b': 7, 'c': 5, 'd': 3, 'e': 3, 'f': 3}) Counter({'a': 1, 'b': 1, 'c': 1, 'd': 1, 'e': 1, 'f': 1})
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。
免責(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)容。