python第三天(dictionary应用)转
1.題目:
python實現英文文章中出現單詞頻率的統計
?前言:
這道題在實際應用場景中使用比較廣泛,比如統計歷年來四六級考試中出現的高頻詞匯,記得李笑來就利用他的編程技能出版過一本背單詞的暢銷書,就是根據詞頻來記單詞,深受學生喜歡。這就是一個把編程技能用來解決實際問題的典型場景。另外,在數據分析時,那些詞云效果本質上都是基于詞頻統計來調整字體的大小,如果你能熟練運用Python中的知識來解決問題的話,說明你真的入門Python了。
?分析
本題主要考察以下幾個方面的知識點:
1、如何正確讀寫文件
在python中讀寫文件可以使用內置函數open(),而 open 函數在python2 和 python3 中有一定的區別,比如 Python 中可以指定讀寫文件的編碼格式,而 Python 則不可以,為了同時兼容2和3,我們通常會使用io模塊下面的 open 函數,大家可以查文檔搞清楚它們之間的區別,培養主動學習能力和查資料的習慣。
另外一點是讀寫文件完成之后是需要關閉文件描述符的,除了可以使用 try...except...finally的語法之后,我們還可以使用更優雅的 with … as 的語法來自動關閉文件。
2、如何對數據進行排序
sorted函數是一個使用頻率很高的內置函數,它的用法也很強大,因為它可以通過指定參數 key 來進行自定義排序,也就意味著你不僅可以對數字排序、對字母排序、還可以對列表、字典、自定義的對象進行排序,你只需要要告訴 sorted 函數的排序規則是什么,比如一個people對象,我既可以根據年齡排序也可以根據身高體重來排序,所以這個函數時非常靈活的,另外,對于列表對象有自帶的 sort 方法,如果能區分清楚 list.sort 與 sorted 之間區別那說明你已經能靈活運用了。
3、字典數據類型的運用
做詞頻統計,用字典無疑是最合適的數據類型,單詞作為字典的key, 單詞出現的次數作為字典的 value,很方便地就記錄好了每個單詞的頻率,字典很像我們的電話本,每個名字關聯一個電話號碼。另外,字典最大的特點就是它的查詢速度會非常快。理想情況下時間復雜度為O(1),我是說理想情況,如果你想深入了解字典的話,建議看看這篇文章 https://www.laurentluce.com/posts/python-dictionary-implementation/
4、正則表達式的運用
對文本、字符串處理,正則表達式簡直是神器,無論是做數據爬蟲還是數據清洗使用非常廣泛,當然,正則表達式并不是Python特有的東西,所有編程語言都支持,我們要做的除了學習正則表達式還有他的API,只有熟悉了API我們才能運用到實際場景中去。關于正則表達式推薦一篇文章:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html ,另外我還發現有同學引入了jieba分詞庫,這個庫在做中文分詞非常有用,感興趣的可以去了解一下。
? python實現英文文章中出現單詞頻率的統計本文的思路:
首先打開文件 ,對于文件的每一行進行詞匯的統計,在這里需要注意 需要替換每一行中的單詞之間的分隔符為空格,然后使用split()函數去掉空格,這樣每一行剩下的就是純粹的單詞,然后遍歷每一行中的每一個單詞,將已經出現在字典中的單詞,頻次直接+1就行(這里需要用到字典中根據鍵來查找值的操作:dictionaryName[key]+=1)
由于很多時候我們只需顯示出現頻次最多的前多少條所以這里需要對頻次進行排序,經過上一個步驟我們已經吧單詞以及對應的頻次存儲在字典中,接下來使用items()函數和list(dictionaryName.items())把字典中的鍵值對構成列表,這一步之后可以轉化為[(key1,value1),(key2,value2)….] ,這樣就可以通過訪問二位列表中元素的方法進行訪問每個單詞以及出現的頻次了
?
?
轉載于:https://www.cnblogs.com/zzlp/p/9823138.html
總結
以上是生活随笔為你收集整理的python第三天(dictionary应用)转的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu 2009 求数列的和(c语言)
- 下一篇: Git(创建版本库)