python 实现字典树_python 字典树(前缀树)基本操作:插入,删除、查找

本文介绍了如何使用Python实现字典树(Trie),包括插入、删除和查找操作。通过字典的setdefault()函数,构建一个前缀树结构,优化搜索性能。同时展示了删除单词和搜索前缀匹配单词的方法。
摘要由CSDN通过智能技术生成

1 #coding=utf-8

2 #字典嵌套牛逼,别人写的,这样每一层非常多的东西,搜索就快了,树高26.所以整体搜索一个不关多大的单词表,还是O(1).

3

4 '''

5 Python 字典 setdefault() 函数和get() 方法类似, 如果键不存在于字典中,将会添加键并将值设为默认值。6 说清楚就是:如果这个键存在字典中,那么这句话就不起作用,否则就添加字典里面这个key的取值为后面的默认值.7 简化了字典计数的代码.并且这个函数的返回值是做完这些事情之后这个key的value值.8 dict.setdefault(key, default=None)9 Python 字典 get() 函数返回指定键的值,如果值不在字典中返回默认值。10 dict.get(key, default=None)11 '''

12

13

14 classTrie:15 root ={}16 END = '/' #加入这个是为了区分单词和前缀,如果这一层node里面没有/他就是前缀.不是我们要找的单词.

17

18 definsert(self, word):19 #从根节点遍历单词,char by char,如果不存在则新增,最后加上一个单词结束标志

20 node =self.root21 for c inword:22 """

23 利用嵌套来做,一个trie树的子树也是一个trie树.24 利用setdefault的返回值是value的特性,如果找到了key就进入value25 没找到,就建立一个空字典26 """

27 node =node.setdefault(c, {})28 node[self.END] =None29 #当word都跑完了,就已经没有字了.那么当前节点也就

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值