飄逸的python,飄逸python

來源:互聯網
上載者:User

飄逸的python,飄逸python

trie,又稱首碼樹或字典樹. 它利用字串的公用首碼來節約儲存空間.

  • 定義
    Trie樹中每個單詞都是通過character by character方法進行儲存,相同首碼單詞共用首碼節點.

    可以看到,每條路徑組成一個單詞.上面這顆樹存了to/tea/ted/ten/inn這些詞.

    • 性質
      • (1)根節點不包含字元,除根節點外的每個節點只包含一個字元。
      • (2)從根節點到某一個節點,路徑上經過的字元串連起來,為該節點對應的字串。
      • (3)每個節點的所有子節點包含的字串不相同。
  • 應用
    • 詞頻統計
      比直接用hash節省空間的
    • 搜尋提示
      輸入首碼的時候提示可以構成的詞
    • 作為輔助結構
      如尾碼樹,AC自動機等的輔助結構
  • 實現
    雖然python沒有指標,但是可以用嵌套字典來實現樹結構.對於非ascii的單詞,統一用unicode編碼來插入與搜尋.


#coding=utf-8class Trie:    root = {}    END = '/'    def add(self, word):        #從根節點遍曆單詞,char by char,如果不存在則新增,最後加上一個單詞結束標誌        node = self.root        for c in word:            node=node.setdefault(c,{})        node[self.END] = None    def find(self, word):        node = self.root        for c in word:            if c not in node:                return False            node = node[c]        return self.END in node

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.