Python实现简单字典树的方法


Posted in Python onApril 29, 2016

本文实例讲述了Python实现简单字典树的方法。分享给大家供大家参考,具体如下:

#coding=utf8
"""代码实现了最简单的字典树,只支持由小写字母组成的字符串。
在此代码基础上扩展一下,就可以实现比较复杂的字典树,比如带统计数的,或支持更多字符的字典树,
或者是支持删除等操作。
"""
class TrieNode(object):
  def __init__(self):
    # 是否构成一个完成的单词
    self.is_word = False
    self.children = [None] * 26
class Trie(object):
  def __init__(self):
    self.root = TrieNode()
  def add(self, s):
    """Add a string to this trie."""
    p = self.root
    n = len(s)
    for i in range(n):
      if p.children[ord(s[i]) - ord('a')] is None:
        new_node = TrieNode()
        if i == n - 1:
          new_node.is_word = True
        p.children[ord(s[i]) - ord('a')] = new_node
        p = new_node
      else:
        p = p.children[ord(s[i]) - ord('a')]
        if i == n - 1:
          p.is_word = True
          return
  def search(self, s):
    """Judge whether s is in this trie."""
    p = self.root
    for c in s:
      p = p.children[ord(c) - ord('a')]
      if p is None:
        return False
    if p.is_word:
      return True
    else:
      return False
if __name__ == '__main__':
  trie = Trie()
  trie.add('str')
  trie.add('acb')
  trie.add('acblde')
  print trie.search('acb')
  print trie.search('ac')
  trie.add('ac')
  print trie.search('ac')

更多关于Python相关内容可查看本站专题:《Python字典操作技巧汇总》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python操作SQLite数据库的方法详解
Jun 16 Python
基于python的多进程共享变量正确打开方式
Apr 28 Python
python中验证码连通域分割的方法详解
Jun 04 Python
Python3.4 splinter(模拟填写表单)使用方法
Oct 13 Python
关于ResNeXt网络的pytorch实现
Jan 14 Python
python递归调用中的坑:打印有值, 返回却None
Mar 16 Python
Pyecharts地图显示不完成问题解决方案
May 11 Python
python为什么要安装到c盘
Jul 20 Python
Python使用for生成列表实现过程解析
Sep 22 Python
全网最细 Python 格式化输出用法讲解(推荐)
Jan 18 Python
python实现学生通讯录管理系统
Feb 25 Python
Python 如何安装Selenium
May 06 Python
Python中操作符重载用法分析
Apr 29 #Python
Python中绑定与未绑定的类方法用法分析
Apr 29 #Python
Python过滤列表用法实例分析
Apr 29 #Python
Python松散正则表达式用法分析
Apr 29 #Python
python中私有函数调用方法解密
Apr 29 #Python
简单学习Python time模块
Apr 29 #Python
Python中MySQL数据迁移到MongoDB脚本的方法
Apr 28 #Python
You might like
php实现mysql数据库分表分段备份
2015/06/18 PHP
PHP微信支付实例解析
2016/07/22 PHP
PHP上传图片时判断上传文件是否为可用图片的方法
2016/10/20 PHP
PHP数组内存利用率低和弱类型详细解读
2017/08/10 PHP
jQuery 性能优化手册 推荐
2010/02/23 Javascript
推荐17个优美新鲜的jQuery的工具提示插件
2012/09/14 Javascript
jQuery Trim去除字符串首尾空字符的实现方法说明
2014/02/11 Javascript
详解JavaScript的另类写法
2016/04/11 Javascript
详解mpvue实现对苹果X安全区域的适配
2019/07/31 Javascript
js 动态校验开始结束时间的实现代码
2020/05/25 Javascript
详解Vue数据驱动原理
2020/11/17 Javascript
[00:58]PWL开团时刻DAY5——十人开雾0换5
2020/11/04 DOTA
Python抓取手机号归属地信息示例代码
2016/11/28 Python
Tensorflow的可视化工具Tensorboard的初步使用详解
2018/02/11 Python
Python实现获取邮箱内容并解析的方法示例
2018/06/16 Python
Django安装配置mysql的方法步骤
2018/10/15 Python
tensorboard显示空白的解决
2020/02/15 Python
利用python实现平稳时间序列的建模方式
2020/06/03 Python
python实现凯撒密码、凯撒加解密算法
2020/06/11 Python
Numpy实现卷积神经网络(CNN)的示例
2020/10/09 Python
python中turtle库的简单使用教程
2020/11/11 Python
Python3使用Selenium获取session和token方法详解
2021/02/16 Python
python实现计算图形面积
2021/02/22 Python
纯HTML5+CSS3制作生日蛋糕(代码易懂)
2016/11/16 HTML / CSS
欧克利英国官网:Oakley英国
2019/08/24 全球购物
在求职信中如何凸显个人优势
2013/10/30 职场文书
工程索赔意向书
2014/08/30 职场文书
党的群众路线领导班子整改方案
2014/09/27 职场文书
2015年小学校长工作总结
2015/05/19 职场文书
小学生手册家长意见
2015/06/03 职场文书
2016年领导干部正风肃纪心得体会
2015/10/09 职场文书
详解CSS不受控制的position fixed
2021/05/25 HTML / CSS
MySQL 外键约束和表关系相关总结
2021/06/20 MySQL
python基础之错误和异常处理
2021/10/24 Python
oracle重置序列从0开始递增1
2022/02/28 Oracle
Mysql分析设计表主键为何不用uuid
2022/03/31 MySQL