利用Python找出序列中出現(xiàn)最多的元素示例代碼
前言
Python包含6種內(nèi)置的序列:列表、元組、字符串 、Unicode字符串、buffer對(duì)象、xrange對(duì)象。在序列中的每個(gè)元素都有自己的編號(hào)。列表與元組的區(qū)別在于,列表是可以修改,而組元不可修改。理論上幾乎所有情況下元組都可以用列表來(lái)代替。有個(gè)例外是但元組作為字典的鍵時(shí),在這種情況下,因?yàn)殒I不可修改,所以就不能使用列表。
我們?cè)谝恍┙y(tǒng)計(jì)工作或者分析過(guò)程中,有事會(huì)遇到要統(tǒng)計(jì)一個(gè)序列中出現(xiàn)最多次的元素,比如一段英文中,查詢出現(xiàn)最多的詞是什么,及每個(gè)詞出現(xiàn)的次數(shù)。一遍的做法為,將每個(gè)此作為key,出現(xiàn)一次,value增加1。
例如:
morewords = ['why','are','you','not','looking','in','my','eyes'] for word in morewords: word_counts[word] += 1
collections.Counter 類就是專門為這類問(wèn)題而設(shè)計(jì)的, 它甚至有一個(gè)有用的 most_common() 方法直接給了你答案。
collections模塊
collections模塊自Python 2.4版本開始被引入,包含了dict、set、list、tuple以外的一些特殊的容器類型,分別是:
- OrderedDict類:排序字典,是字典的子類。引入自2.7。
- namedtuple()函數(shù):命名元組,是一個(gè)工廠函數(shù)。引入自2.6。
- Counter類:為hashable對(duì)象計(jì)數(shù),是字典的子類。引入自2.7。
- deque:雙向隊(duì)列。引入自2.4。
- defaultdict:使用工廠函數(shù)創(chuàng)建字典,使不用考慮缺失的字典鍵。引入自2.5。
文檔參見:http://docs.python.org/2/library/collections.html。
Counter類
Counter類的目的是用來(lái)跟蹤值出現(xiàn)的次數(shù)。它是一個(gè)無(wú)序的容器類型,以字典的鍵值對(duì)形式存儲(chǔ),其中元素作為key,其計(jì)數(shù)作為value。計(jì)數(shù)值可以是任意的Interger(包括0和負(fù)數(shù))。Counter類和其他語(yǔ)言的bags或multisets很相似。
為了演示,先假設(shè)你有一個(gè)單詞列表并且想找出哪個(gè)單詞出現(xiàn)頻率最高。你可以這樣做:
words = [
'look', 'into', 'my', 'eyes', 'look', 'into', 'my', 'eyes',
'the', 'eyes', 'the', 'eyes', 'the', 'eyes', 'not', 'around', 'the',
'eyes', "don't", 'look', 'around', 'the', 'eyes', 'look', 'into',
'my', 'eyes', "you're", 'under'
]
from collections import Counter
word_counts = Counter(words)
# 出現(xiàn)頻率最高的3個(gè)單詞
top_three = word_counts.most_common(3)
print(top_three)
# Outputs [('eyes', 8), ('the', 5), ('look', 4)]
另外collections.Counter還有一個(gè)比較高級(jí)的功能,支持?jǐn)?shù)學(xué)算術(shù)符的相加相減。
>>> a = Counter(words)
>>> b = Counter(morewords)
>>> a
Counter({'eyes': 8, 'the': 5, 'look': 4, 'into': 3, 'my': 3, 'around': 2,
"you're": 1, "don't": 1, 'under': 1, 'not': 1})
>>> b
Counter({'eyes': 1, 'looking': 1, 'are': 1, 'in': 1, 'not': 1, 'you': 1,
'my': 1, 'why': 1})
>>> # Combine counts
>>> c = a + b
>>> c
Counter({'eyes': 9, 'the': 5, 'look': 4, 'my': 4, 'into': 3, 'not': 2,
'around': 2, "you're": 1, "don't": 1, 'in': 1, 'why': 1,
'looking': 1, 'are': 1, 'under': 1, 'you': 1})
>>> # Subtract counts
>>> d = a - b
>>> d
Counter({'eyes': 7, 'the': 5, 'look': 4, 'into': 3, 'my': 2, 'around': 2,
"you're": 1, "don't": 1, 'under': 1})
>>>
參考文檔:
https://docs.python.org/3/library/collections.html
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- Python要求O(n)復(fù)雜度求無(wú)序列表中第K的大元素實(shí)例
- python-序列解包(對(duì)可迭代元素的快速取值方法)
- Python如何篩選序列中的元素的方法實(shí)現(xiàn)
- Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)將名稱映射到序列元素中的方法
- python如何統(tǒng)計(jì)序列中元素
- Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)篩選及提取序列中元素的方法
- Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)找出序列中出現(xiàn)次數(shù)最多的元素算法示例
- Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)從序列中移除重復(fù)項(xiàng)且保持元素間順序不變的方法
- python實(shí)現(xiàn)獲取序列中最小的幾個(gè)元素
- Python過(guò)濾序列元素的方法
相關(guān)文章
Python生成動(dòng)態(tài)路由軌跡圖的示例詳解
在當(dāng)今的數(shù)據(jù)驅(qū)動(dòng)時(shí)代,可視化技術(shù)在數(shù)據(jù)分析和決策支持中扮演著越來(lái)越重要的角色,本文將介紹如何使用Python來(lái)生成動(dòng)態(tài)的路由軌跡圖,需要的可以了解下2025-02-02
解決python中遇到字典里key值為None的情況,取不出來(lái)的問(wèn)題
今天小編就為大家分享一篇解決python中遇到字典里key值為None的情況,取不出來(lái)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
Python設(shè)置Socket代理及實(shí)現(xiàn)遠(yuǎn)程攝像頭控制的例子
這篇文章主要介紹了Python設(shè)置Socket代理及實(shí)現(xiàn)遠(yuǎn)程攝像頭控制的例子,皆是對(duì)socket模塊的實(shí)際運(yùn)用,需要的朋友可以參考下2015-11-11
Python scikit-learn 做線性回歸的示例代碼
本篇文章主要介紹了Python scikit-learn 做線性回歸的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
python3.7.2 tkinter entry框限定輸入數(shù)字的操作
這篇文章主要介紹了python3.7.2 tkinter entry框限定輸入數(shù)字的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05

