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通过解析网页实现看报程序的方法
Aug 04 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
Mar 02 Python
python 捕获shell脚本的输出结果实例
Jan 04 Python
python3 读写文件换行符的方法
Apr 09 Python
python保存二维数组到txt文件中的方法
Nov 15 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
Dec 05 Python
Python 类的私有属性和私有方法实例分析
Sep 29 Python
python单向循环链表原理与实现方法示例
Dec 03 Python
解决Python import docx出错DLL load failed的问题
Feb 13 Python
Python大批量搜索引擎图像爬虫工具详解
Nov 16 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
Jan 15 Python
python元组拆包实现方法
Feb 28 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
什么是短波收听SWL
2021/03/01 无线电
php用正则表达式匹配中文实例详解
2013/11/06 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
2015/10/10 PHP
php中引用&的用法分析【变量引用,函数引用,对象引用】
2016/12/12 PHP
Input 特殊事件onpopertychange和oninput
2009/06/17 Javascript
详解JavaScript中setSeconds()方法的使用
2015/06/11 Javascript
JavaScript实现星星等级评价功能
2017/03/22 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
Node.js如何使用Diffie-Hellman密钥交换算法详解
2017/09/05 Javascript
关于Ajax的原理以及代码封装详解
2017/09/08 Javascript
在Vue.js中使用Mixins的方法
2017/09/12 Javascript
微信小程序使用navigateTo数据传递的实例
2017/09/26 Javascript
vue 基于element-ui 分页组件封装的实例代码
2018/12/10 Javascript
Vue的H5页面唤起支付宝支付功能
2019/04/18 Javascript
ajaxfileupload.js实现上传文件功能
2019/04/19 Javascript
简单了解vue中父子组件如何相互传递值(基础向)
2019/07/12 Javascript
python写入中英文字符串到文件的方法
2015/05/06 Python
python使用xslt提取网页数据的方法
2018/02/23 Python
Pyinstaller将py打包成exe的实例
2018/03/31 Python
Python中创建二维数组
2018/10/17 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
2019/04/01 Python
Python3 实现串口两进程同时读写
2019/06/12 Python
微信公众号token验证失败解决方案
2019/07/22 Python
浅谈keras的深度模型训练过程及结果记录方式
2020/01/24 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
2020/07/15 Python
PyTorch 导数应用的使用教程
2020/08/31 Python
用python读取xlsx文件
2020/12/17 Python
新闻编辑自荐信
2013/11/03 职场文书
留学生如何写好自荐信
2013/12/27 职场文书
2014年应届大学生自我评价
2014/01/09 职场文书
顶撞老师检讨书
2014/02/07 职场文书
大学生个人先进事迹材料范文
2014/05/03 职场文书
俄语专业毕业生求职信
2014/07/12 职场文书
初中团委工作总结
2015/08/13 职场文书
Python使用random模块实现掷骰子游戏的示例代码
2021/04/29 Python
python3+PyQt5+Qt Designer实现界面可视化
2021/06/10 Python