字母查找树

字母查找树(letter trie)是一种可以用来索引词汇的数据结构,一次一个字母。


构建一个字母查找树:一个++递归++函数建立一个嵌套的字典结构,每一级嵌套包含给定前缀的所有单词,而子查找树含有所有可能的后续词



In [15]: def insert(trie, key, value):
    ...:     if key:
    ...:         first, rest = key[0], key[1:]
    ...:         if first not in trie:
    ...:             trie[first] = {}
    ...:         insert(trie[first], rest, value)
    ...:     else:
    ...:         trie['value'] = value
    ...:         

In [16]: import nltk

In [17]: trie = nltk.defaultdict(dict)

In [18]: insert(trie, 'chat', 'cat')

In [19]: insert(trie, 'chien', 'dog')

In [20]: insert(trie, 'chair', 'flesh')

In [21]: insert(trie, 'chic', 'stylist')

In [22]: trie = dict(trie)

In [23]: trie['c']['h']['a']['t']['value']
Out[23]: 'cat'

In [25]: print trie
{'c': {'h': {'a': {'i': {'r': {'value': 'flesh'}}, 't': {'value': 'cat'}}, 'i': {'c': {'value': 'stylist'}, 'e': {'n': {'value': 'dog'}}}}}}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值