<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【Python】Python字典的高級用法-統(tǒng)計(jì)計(jì)數(shù)

          共 1812字,需瀏覽 4分鐘

           ·

          2021-09-13 23:03

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

           

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

           

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

          方法一:

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

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

           

          方法二:

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

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

           方法三:

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

           

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

          上面三種方法,看起來簡單,實(shí)際上,要理解其中的奧妙是非常困難的,特別是對于初學(xué)者,大家可以仔細(xì)琢磨。
          方法一之所以要加條件判斷,是因?yàn)榈谝淮纬霈F(xiàn)的字,在字典中不存在,dict[key],當(dāng)key不存在時(shí)會(huì)報(bào)錯(cuò)。
          方法二通過get(word,0)方法,獲取,如果不存在,則默認(rèn)加入并置為0,后面加1就恰好是統(tǒng)計(jì)的次數(shù)了。需要充分理解get方法。
          方法三通過defaultdict(int),默認(rèn)不存在時(shí)是0,都不用設(shè)置,顯得更加簡潔,大家細(xì)細(xì)品味。
          不明白的可以看我的另外兩篇文章:
          Python庫collections,讓你擊敗99%的Pythoner【萬字長文詳解】
          Python字典詳解-超級完整版

           

          ···  END  ···
          往期精彩回顧




          本站qq群851320808,加入微信群請掃碼:
          瀏覽 33
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91av成人网站 | 青娱乐人人操 | 翔田千里在线视频 | 特黄一级毛片免费播放 | 影音先锋人人操 |