【Python】Python字典的高级用法-统计计数
在很多計(jì)算任務(wù)中,需要統(tǒng)計(jì)不同信息出現(xiàn)的次數(shù),最常見的就是統(tǒng)計(jì)某段文字中每個(gè)詞或者每個(gè)字出現(xiàn)的次數(shù),也就是常見的詞頻統(tǒng)計(jì),這個(gè)時(shí)候,字典就派上了很大的用場(chǎng),我們看看通過(guò)字典怎么進(jìn)行統(tǒng)計(jì)。
?
我們用魯迅先生的經(jīng)典語(yǔ)錄作為例子(略有改動(dòng)),為了簡(jiǎn)化,就不分詞了,自己分字,統(tǒng)計(jì)字?jǐn)?shù)即可。分詞后形成了一個(gè)列表
?
text = list('床上有兩個(gè)枕頭,一個(gè)是我的,另一個(gè)也是我的') print(text) ['床', '上', '有', '兩', '個(gè)', '枕', '頭', ',', '一', '個(gè)', '是', '我','的', ',', '另', '一', '個(gè)', '也', '是', '我', '的']方法一:
通過(guò)字典,直接進(jìn)行統(tǒng)計(jì)
word_dic = {} for word in text:if word in word_dic:word_dic[word] += 1else:word_dic[word] = 1 print(word_dic) {'床': 1, '上': 1, '有': 1, '兩': 1, '個(gè)': 3, '枕': 1, '頭': 1, ',': 2,'一': 2, '是': 2, '我': 2, '的': 2, '另': 1, '也': 1}?
方法二:
上面的語(yǔ)句加了條件判斷,顯得稍微有點(diǎn)復(fù)雜,我們可以簡(jiǎn)化如下
word_dic = {} for word in text:word_dic[word] = word_dic.get(word,0)+1 print(word_dic) {'床': 1, '上': 1, '有': 1, '兩': 1, '個(gè)': 3, '枕': 1, '頭': 1, ',': 2,'一': 2, '是': 2, '我': 2, '的': 2, '另': 1, '也': 1}?方法三:
還可以用collections 模塊的defaultdict進(jìn)行統(tǒng)計(jì),顯得更加簡(jiǎn)潔,更加專業(yè)。
?
from collections import defaultdict word_dic = defaultdict(int) for word in text:word_dic[word] += 1 print(word_dic) defaultdict(<class 'int'>, {'床': 1, '上': 1, '有': 1, '兩': 1, '個(gè)': 3, '枕': 1, '頭':?1,?',':?2,?'一':?2,?'是':?2,?'我':?2,?'的':?2,?'另':?1,?'也':?1})????上面三種方法,看起來(lái)簡(jiǎn)單,實(shí)際上,要理解其中的奧妙是非常困難的,特別是對(duì)于初學(xué)者,大家可以仔細(xì)琢磨。
方法一之所以要加條件判斷,是因?yàn)榈谝淮纬霈F(xiàn)的字,在字典中不存在,dict[key],當(dāng)key不存在時(shí)會(huì)報(bào)錯(cuò)。
方法二通過(guò)get(word,0)方法,獲取,如果不存在,則默認(rèn)加入并置為0,后面加1就恰好是統(tǒng)計(jì)的次數(shù)了。需要充分理解get方法。
方法三通過(guò)defaultdict(int),默認(rèn)不存在時(shí)是0,都不用設(shè)置,顯得更加簡(jiǎn)潔,大家細(xì)細(xì)品味。
不明白的可以看我的另外兩篇文章:
Python庫(kù)collections,讓你擊敗99%的Pythoner【萬(wàn)字長(zhǎng)文詳解】
Python字典詳解-超級(jí)完整版
?
···? END? ··· 往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機(jī)器學(xué)習(xí)在線手冊(cè)深度學(xué)習(xí)筆記專輯《統(tǒng)計(jì)學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載機(jī)器學(xué)習(xí)的數(shù)學(xué)基礎(chǔ)專輯黃海廣老師《機(jī)器學(xué)習(xí)課程》視頻課 本站qq群851320808,加入微信群請(qǐng)掃碼:總結(jié)
以上是生活随笔為你收集整理的【Python】Python字典的高级用法-统计计数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Uncaught (in promise
- 下一篇: 95后程序员晒出工资单:狠补了这个,真香