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代码检查工具pylint 让你的python更规范
Sep 05 Python
Python中将字典转换为XML以及相关的命名空间解析
Oct 15 Python
在pycharm中python切换解释器失败的解决方法
Oct 29 Python
Python 获取中文字拼音首个字母的方法
Nov 28 Python
python 去除二维数组/二维列表中的重复行方法
Jan 23 Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
Apr 30 Python
Python应用领域和就业形势分析总结
May 14 Python
在python中,使用scatter绘制散点图的实例
Jul 03 Python
python监控进程状态,记录重启时间及进程号的实例
Jul 15 Python
python循环嵌套的多种使用方法解析
Nov 29 Python
Python loguru日志库之高效输出控制台日志和日志记录
Mar 07 Python
pip安装tensorflow的坑的解决
Apr 19 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上传文件并显示上传进度的方法
2015/03/24 PHP
网站导致浏览器崩溃的原因总结(多款浏览器) 推荐
2010/04/15 Javascript
js页面跳转常用的几种方式
2010/11/25 Javascript
兼容IE和Firefox的javascript获取iframe文档内容的函数
2011/08/15 Javascript
用JSON做数据传输格式中的一些问题总结
2011/12/21 Javascript
深入理解Javascript中this的作用域
2014/08/12 Javascript
非jQuery实现照片散落桌子上,单击放大的LightBox效果
2014/11/28 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
去除html代码里面的script正则方法
2016/05/19 Javascript
angular 基于ng-messages的表单验证实例
2017/05/04 Javascript
详解Javascript中new()到底做了些什么?
2018/03/29 Javascript
小程序实现列表多个批量倒计时
2021/01/29 Javascript
如何利用vue+vue-router+elementUI实现简易通讯录
2019/05/13 Javascript
JS中的算法与数据结构之集合(Set)实例详解
2019/08/20 Javascript
js实现星星海特效的示例
2020/09/28 Javascript
深入理解Python中命名空间的查找规则LEGB
2015/08/06 Python
python通过文件头判断文件类型
2015/10/30 Python
Python OpenCV 直方图的计算与显示的方法示例
2018/02/08 Python
python爬虫基础教程:requests库(二)代码实例
2019/04/09 Python
python tools实现视频的每一帧提取并保存
2020/03/20 Python
Python实现12306火车票抢票系统
2019/07/04 Python
Python如何实现强制数据类型转换
2019/11/22 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
2020/07/02 Python
Python3使用 GitLab API 进行批量合并分支
2020/10/15 Python
详解CSS3阴影 box-shadow的使用和技巧总结
2016/12/03 HTML / CSS
纯CSS3实现圆圈动态发光特效动画的示例代码
2021/03/08 HTML / CSS
HTML5 层的叠加的实现
2020/07/07 HTML / CSS
俄罗斯电子产品在线商店:UltraTrade
2020/01/30 全球购物
软件售后服务方案
2014/05/29 职场文书
高职教师先进事迹材料
2014/08/24 职场文书
2014小学生国庆65周年演讲稿
2014/09/21 职场文书
Python趣味实战之手把手教你实现举牌小人生成器
2021/06/07 Python
JavaScript高级程序设计之基本引用类型
2021/11/17 Javascript
默认网关不可用修复后过一会又不好使了解决方法
2022/04/08 数码科技
关于pytest结合csv模块实现csv格式的数据驱动问题
2022/05/30 Python
Win11无法安装更新补丁KB3045316怎么办 附KB3045316补丁修复教程
2022/08/14 数码科技