内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

Python如何統(tǒng)計字母出現(xiàn)的次數(shù)-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(guān)Python如何統(tǒng)計字母出現(xiàn)的次數(shù)的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

成都創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、薛城網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站購物商城網(wǎng)站建設(shè)、集團公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為薛城等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

題目:

統(tǒng)計一個文件中每個單詞出現(xiàn)的次數(shù),列出出現(xiàn)頻率最多的5個單詞。

前言:

這道題在實際應(yīng)用場景中使用比較廣泛,比如統(tǒng)計歷年來四六級考試中出現(xiàn)的高頻詞匯,記得李笑來就利用他的編程技能出版過一本背單詞的暢銷書,就是根據(jù)詞頻來記單詞,深受學(xué)生喜歡。這就是一個把編程技能用來解決實際問題的典型場景。另外,在數(shù)據(jù)分析時,那些詞云效果本質(zhì)上都是基于詞頻統(tǒng)計來調(diào)整字體的大小,如果你能熟練運用Python中的知識來解決問題的話,說明你真的入門Python了。

分析

本題主要考察以下幾個方面的知識點:

1、如何正確讀寫文件

在python中讀寫文件可以使用內(nèi)置函數(shù)open(),而 open 函數(shù)在python2 和 python3 中有一定的區(qū)別,比如 Python 中可以指定讀寫文件的編碼格式,而 Python 則不可以,為了同時兼容2和3,我們通常會使用io模塊下面的 open 函數(shù),大家可以查文檔搞清楚它們之間的區(qū)別,培養(yǎng)主動學(xué)習(xí)能力和查資料的習(xí)慣。

另外一點是讀寫文件完成之后是需要關(guān)閉文件描述符的,除了可以使用 try...except...finally的語法之后,我們還可以使用更優(yōu)雅的 with … as 的語法來自動關(guān)閉文件。

2、如何對數(shù)據(jù)進行排序

sorted函數(shù)是一個使用頻率很高的內(nèi)置函數(shù),它的用法也很強大,因為它可以通過指定參數(shù) key 來進行自定義排序,也就意味著你不僅可以對數(shù)字排序、對字母排序、還可以對列表、字典、自定義的對象進行排序,你只需要要告訴 sorted 函數(shù)的排序規(guī)則是什么,比如一個people對象,我既可以根據(jù)年齡排序也可以根據(jù)身高體重來排序,所以這個函數(shù)時非常靈活的,另外,對于列表對象有自帶的 sort 方法,如果能區(qū)分清楚 list.sort 與 sorted 之間區(qū)別那說明你已經(jīng)能靈活運用了。

3、字典數(shù)據(jù)類型的運用

做詞頻統(tǒng)計,用字典無疑是最合適的數(shù)據(jù)類型,單詞作為字典的key, 單詞出現(xiàn)的次數(shù)作為字典的 value,很方便地就記錄好了每個單詞的頻率,字典很像我們的電話本,每個名字關(guān)聯(lián)一個電話號碼。另外,字典大的特點就是它的查詢速度會非??臁@硐肭闆r下時間復(fù)雜度為O(1),我是說理想情況,如果你想深入了解字典的話,建議看看這篇文章 https://www.laurentluce.com/posts/python-dictionary-implementation/

4、正則表達式的運用

對文本、字符串處理,正則表達式簡直是神器,無論是做數(shù)據(jù)爬蟲還是數(shù)據(jù)清洗使用非常廣泛,當然,正則表達式并不是Python特有的東西,所有編程語言都支持,我們要做的除了學(xué)習(xí)正則表達式還有他的API,只有熟悉了API我們才能運用到實際場景中去。關(guān)于正則表達式推薦一篇文章:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html ,另外我還發(fā)現(xiàn)有同學(xué)引入了jieba分詞庫,這個庫在做中文分詞非常有用,感興趣的可以去了解一下。

實現(xiàn)

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

# -*- 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)

打印結(jié)果:

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

總結(jié)

我在看大家代碼的時候,很多代碼依然存在有命名不規(guī)范(建議讀PEP8),代碼的排版混亂(閱讀起來很困難,建議用Pycharm進行格式化)。還有不少代碼的實現(xiàn)方式看起來很復(fù)雜(往往越復(fù)雜的代碼Bug越多)。當然,實現(xiàn)方法不是唯一。

比如Python模塊本身就提供了一個collections.Counter的類,它繼承自dict類,就是用于做統(tǒng)計的,我發(fā)現(xiàn)有部分同學(xué)使用的就是這個類來實現(xiàn)的,細心的你可能發(fā)現(xiàn)了,我實現(xiàn)的這個Counter和collections下面那個Counter很像,其實這就是造輪子,造輪子可以鍛煉我們的編程思維,當然在工作上有現(xiàn)成的東西就沒必要自己造輪子了,除非你有信心做得更好。你也可以思考思考,假如Python沒有提供Counter這個工具,你該怎么做。

另外,該模塊還提供一個有序的字典對象 OrderedDict,使用它可以免去我們手動排序的操作。最后建議大家學(xué)習(xí)總結(jié)上面我提到的所有內(nèi)容。如果你能堅持100天,相信你對Python的掌握程度是游刃有余的。

感謝各位的閱讀!關(guān)于Python如何統(tǒng)計字母出現(xiàn)的次數(shù)就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

標題名稱:Python如何統(tǒng)計字母出現(xiàn)的次數(shù)-創(chuàng)新互聯(lián)
本文URL:http://www.rwnh.cn/article18/dosogp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護、網(wǎng)站收錄、Google、小程序開發(fā)、網(wǎng)站設(shè)計公司、移動網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
兴安盟| 儋州市| 宜兰县| 新邵县| 武义县| 吴江市| 蒙阴县| 鄂尔多斯市| 渭源县| 永和县| 呼图壁县| 育儿| 扎兰屯市| 临洮县| 大连市| 奈曼旗| 太仓市| 保定市| 洪雅县| 磴口县| 永年县| 噶尔县| 泸西县| 乳山市| 竹溪县| 宿迁市| 靖边县| 左权县| 沭阳县| 辛集市| 石棉县| 武宁县| 郴州市| 乌鲁木齐县| 凤冈县| 贵州省| 花莲市| 上思县| 赫章县| 县级市| 上林县|