99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀Python字典的高級用法——統(tǒng)計計數(shù)
Python字典的高級用法——統(tǒng)計計數(shù)
2021-09-24
收藏

來源:AI入門學(xué)習(xí)

作者:小伍哥

在很多計算任務(wù)中,需要統(tǒng)計不同信息出現(xiàn)的次數(shù),最常見的就是統(tǒng)計某段文字中每個詞或者每個字出現(xiàn)的次數(shù),也就是常見的詞頻統(tǒng)計,這個時候,字典就派上了很大的用場,我們看看通過字典怎么進行統(tǒng)計。

我們用魯迅先生的經(jīng)典語錄作為例子(略有改動),為了簡化,就不分詞了,自己分字,統(tǒng)計字?jǐn)?shù)即可。分詞后形成了一個列表

text = list('床上有兩個枕頭,一個是我的,另一個也是我的') print(text)
['床', '上', '有', '兩', '個', '枕', '頭', ',', '一', '個', '是', '我', '的', ',', '另', '一', '個', '也', '是', '我', '的']

方法一:

通過字典,直接進行統(tǒng)計

word_dic = {} for word in text: if word in word_dic: word_dic[word] += 1 else: word_dic[word] = 1 print(word_dic) {'床': 1, '上': 1, '有': 1, '兩': 1, '個': 3, '枕': 1, '頭': 1, ',': 2, '一': 2, '是': 2, '我': 2, '的': 2, '另': 1, '也': 1}

方法二:

上面的語句加了條件判斷,顯得稍微有點復(fù)雜,我們可以簡化如下

word_dic = {} for word in text:
    word_dic[word] = word_dic.get(word,0)+1 print(word_dic)
{'床': 1, '上': 1, '有': 1, '兩': 1, '個': 3, '枕': 1, '頭': 1, ',': 2, '一': 2, '是': 2, '我': 2, '的': 2, '另': 1, '也': 1}

方法三:

還可以用collections 模塊的defaultdict進行統(tǒng)計,顯得更加簡潔,更加專業(yè)。

from collections import defaultdict
word_dic = defaultdict(int) for word in text:
    word_dic[word] += 1 print(word_dic)
defaultdict('int'>, {'床': 1, '上': 1, '有': 1, '兩': 1, '個': 3, '枕': 1, '頭': 1, ',': 2, '一': 2, '是': 2, '我': 2, '的': 2, '另': 1, '也': 1})

上面三種方法,看起來簡單,實際上,要理解其中的奧妙是非常困難的,特別是對于初學(xué)者,大家可以仔細(xì)琢磨。

方法一之所以要加條件判斷,是因為第一次出現(xiàn)的字,在字典中不存在,dict[key],當(dāng)key不存在時會報錯。

方法二通過get(word,0)方法,獲取,如果不存在,則默認(rèn)加入并置為0,后面加1就恰好是統(tǒng)計的次數(shù)了。需要充分理解get方法。

方法三通過defaultdict(int),默認(rèn)不存在時是0,都不用設(shè)置,顯得更加簡潔,大家細(xì)細(xì)品味。


數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }