搜尋
首頁資料庫mysql教程Python怎麼統計字母出現的次數

這次帶給大家Python怎麼統計字母出現的次數,Python統計字母出現次數的注意事項有哪些,下面就是實戰案例,一起來看一下。

題目:

統計一個檔案中每個單字出現的次數,列出出現頻率最多的5個字。

前言:

這題在實際應用場景中使用比較廣泛,例如統計歷年來四、六級考試中出現的高頻詞彙,記得李笑來就利用他的程式設計技能出版過一本背單字的暢銷書,就是根據詞頻來記單詞,深受學生喜歡。這就是一個把程式設計技能用來解決實際問題的典型場景。另外,在資料分析時,那些詞雲效果本質上都是基於詞頻統計來調整字體的大小,如果你能熟練運用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分詞庫,這個庫在做中文分詞非常有用,有興趣的可以去了解一下。

實作

分析完後,我們實作起來其實是非常快的。所以我們在拿到一個需求的時候,首先肯定是把需求弄清楚,想想大概可以用哪些技術來實現,隨後才是動手寫程式碼,其實我們在工作上,真正寫程式碼的時間還不到一半。

# -*- coding:utf-8 -*-
import io
import re
class Counter:
 def init(self, path):
 """
 :param path: 文件路径
 """
 self.mapping = dict()
 with io.open(path, encoding="utf-8") as f:
  data = f.read()
  words = [s.lower() for s in re.findall("\w+", data)]
  for word in words:
  self.mapping[word] = self.mapping.get(word, 0) + 1
 def most_common(self, n):
 assert n > 0, "n should be large than 0"
 return sorted(self.mapping.items(), key=lambda item: item[1], reverse=True)[:n]
if name == 'main':
 most_common_5 = Counter("importthis.txt").most_common(5)
 for item in most_common_5:
 print(item)

列印結果:

('is', 10)
('better', 8)
('than', 8)
('the', 6)
('to' , 5)

總結

#我在看大家程式碼的時候,很多程式碼依然存在著命名不規範(建議讀PEP8),程式碼的排版混亂(閱讀起來很困難,建議用Pycharm進行格式化)。還有不少程式碼的實作方式看起來很複雜(往往越複雜的程式碼Bug越多)。當然,實作方法不是唯一。

例如Python模組本身就提供了一個collections.Counter的類,它繼承自dict類,就是用於做統計的,我發現有部分同學使用的就是這個類來實現的,細心的你可能發現了,我實現的這個Counter和collections下面那個Counter很像,其實這就是造輪子,造輪子可以鍛鍊我們的程式設計思維,當然在工作上有現成的東西就沒必要自己造輪子了,除非你有信心做得更好。你也可以思考思考,如果Python沒有提供Counter這個工具,該怎麼做。

另外,該模組還提供一個有序的字典物件 OrderedDict,使用它可以免去我們手動排序的操作。最後建議大家學習總結上面我提到的所有內容。如果你能堅持100天,相信你對Python的掌握程度是游刃有餘的。

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

Python中怎樣把矩陣轉換成列表

#在python中列表,陣列,矩陣互相轉換的方法

以上是Python怎麼統計字母出現的次數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
详细讲解Python之Seaborn(数据可视化)详细讲解Python之Seaborn(数据可视化)Apr 21, 2022 pm 06:08 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

详细了解Python进程池与进程锁详细了解Python进程池与进程锁May 10, 2022 pm 06:11 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于进程池与进程锁的相关问题,包括进程池的创建模块,进程池函数等等内容,下面一起来看一下,希望对大家有帮助。

Python自动化实践之筛选简历Python自动化实践之筛选简历Jun 07, 2022 pm 06:59 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于简历筛选的相关问题,包括了定义 ReadDoc 类用以读取 word 文件以及定义 search_word 函数用以筛选的相关内容,下面一起来看一下,希望对大家有帮助。

归纳总结Python标准库归纳总结Python标准库May 03, 2022 am 09:00 AM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于标准库总结的相关问题,下面一起来看一下,希望对大家有帮助。

Python数据类型详解之字符串、数字Python数据类型详解之字符串、数字Apr 27, 2022 pm 07:27 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于数据类型之字符串、数字的相关问题,下面一起来看一下,希望对大家有帮助。

分享10款高效的VSCode插件,总有一款能够惊艳到你!!分享10款高效的VSCode插件,总有一款能够惊艳到你!!Mar 09, 2021 am 10:15 AM

VS Code的确是一款非常热门、有强大用户基础的一款开发工具。本文给大家介绍一下10款高效、好用的插件,能够让原本单薄的VS Code如虎添翼,开发效率顿时提升到一个新的阶段。

详细介绍python的numpy模块详细介绍python的numpy模块May 19, 2022 am 11:43 AM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于numpy模块的相关问题,Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展,下面一起来看一下,希望对大家有帮助。

python中文是什么意思python中文是什么意思Jun 24, 2019 pm 02:22 PM

pythn的中文意思是巨蟒、蟒蛇。1989年圣诞节期间,Guido van Rossum在家闲的没事干,为了跟朋友庆祝圣诞节,决定发明一种全新的脚本语言。他很喜欢一个肥皂剧叫Monty Python,所以便把这门语言叫做python。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具