Python 文字詞頻統計

2021-09-25 19:29:23 字數 2069 閱讀 3886

hamlettxt = gettext()

words = hemlettxt.split()

counts={}

for word in words:

counts[word]=counts.get(word,0)+1

這是一段遍歷hamlet.txt檔案的一段**.s.split()函式返回的是列表list

我有一些困惑:

1.最後一句**是如何執行的?

counts[word]=counts.get(word,0)+1
python是如何執行它的?從左到右?還是從右到左?

print(lst)==lst.reverse()
利用這段函式的執行,發現python會先列印,再翻轉,所以說是從左往右的。

所以**是先執行等號左邊的**, 先將word這個鍵建立,此時還未執行"="操作.

然後再執行等號右邊的**.

[cout.get(key,default=none)這個函式是通過key獲取value,如果找不到key,則返回none.]

由於count.get(word,0)是第一次在字典中查詢key,所以會返回0,這個時候需要加1.同時也是為了以後的累加,如同sum =sum+1一樣.

[因為word是從txt文字中獲得的,所以必定出現一次]

2,知道了如何新增鍵與值,如何累加呢?

字典比較神奇的一點就是,它的新增和修改是同樣的形式.

>>> count

>>> count['nihao']=3

>>> count

>>> count['aini']=2

>>> count

從以上**可以發現,如何鍵在字典裡面,則"count[鍵]=值"是修改;若不在字典裡面,則是新增.

所以,對txt引入字典的概念,也正是利用了這一特性,用了一行**就搞定了[word]與[次數]的問題.

items = list(counts.items()) 

items.sort(key = lambda x:x[1],reverse = true)

counts.items()函式以列表的形式返回可遍歷的(鍵, 值) 元組陣列

>>> count=

>>> count.items()

dict_items([('nihao', 2), ('buhao', 3)])

>>> list(count)

['nihao', 'buhao']

>>> list(count.keys())

['nihao', 'buhao']

>>> list(count.values())

[2, 3]

count.items()是轉換成二維的元組形式

list(count)與list(count.keys())有同樣的效果,將鍵轉成list

list(count.values())將值轉成list

items.sort(key = lambda x:x[1],reverse = true)
items.sort()函式是對元素以從小到大的方式進行排序,所以這裡使用了reverse引數,使得元素從大到小排序.

如果處理的資料不是一維的,而是二維的甚至多維的,就要利用sorted()函式內的key引數,它可傳入乙個自定義函式.

這裡items中包含的是一組二維的元組(鍵,值),這裡使用了lambda函式.

>>> y = lambda x,y:x+y

>>> y(1,2)

3

lambda函式是乙個匿名函式,從上面例子可知,":"冒號後面的是表示式.輸入的引數以逗號隔開.

key引數傳入了乙個lambda函式表示式,其x就代表列表裡的每乙個元素,然後分別利用索引返回元素內的第x個元素,這就代表了sort()函式利用哪乙個元素進行排列。

所以就是按照元組中的第二個元素進行排序.

文字詞頻統計是字典嗎 Python 文字詞頻統計

很多時候需要對一篇文章統計其中多次出現詞語,進而分析文章的內容,這就需要用到詞頻統計。詞頻統計就是累加問題,即對文件中每個詞設定乙個計數器,詞語每出現一次,相關計數器就加一次。def gettext text open ceshi.txt r read text text.lower for ch ...

Python例項 文字詞頻統計

最近在mooc跟著北京理工大學的嵩天老師學習python 受益匪淺,老師所講的通俗易懂,推薦給大家。在此記點筆記和注釋,備忘。今天所記得是文字詞頻統計 hamlet文字詞頻統計。直接上源 calhamletv1.py def gettext txt open e hamlet.txt r read ...

Python 文字詞頻統計中英文

統計一段英文中 出現次數最多的幾個單詞 def get text text open eng.txt r read text text.lower 所有單詞都替換成小寫 for ch in 去噪,歸一化處理,把所有特殊符號替換為空格 text text.replace ch,return text ...