本文实例讲述了Python数据结构与算法之字典树实现方法。分享给大家供大家参考,具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
class TrieTree(): def __init__( self ): self .root = {} def addNode( self , str ): # 树中每个结点(除根节点),包含到该结点的单词数,以及该结点后面出现字母的键 nowdict = self .root for i in range ( len ( str )): if str [i] not in nowdict: # 发现新的组合方式 nowdict[ str [i]] = { 'count' : 0 , 'prefix' : str [:i + 1 ]} nowdict = nowdict[ str [i]] # 转移到下一个结点 nowdict[ 'count' ] + = 1 def countWord( self , str ): # 返回输入单词在树中出现的次数 nowdict = self .root for s in str : if s not in nowdict: return 0 nowdict = nowdict[s] # 匹配当前结点,转下一个结点 # 到了这一步证明单词存在 return nowdict[ 'count' ] if __name__ = = "__main__" : pass Text = [ 'b' , 'abc' , 'abd' , 'bcd' , 'abcd' , 'efg' , 'hii' , 'bcd' ] t = TrieTree() for str in Text: t.addNode( str ) print t.countWord( 'bcd' ) >>> 2 |
希望本文所述对大家Python程序设计有所帮助。
原文链接:http://www.cnblogs.com/hanahimi/p/4693191.html