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 描述符(Descriptor)入门
Nov 20 Python
python中urllib.unquote乱码的原因与解决方法
Apr 24 Python
django认证系统实现自定义权限管理的方法
Jul 16 Python
flask框架实现连接sqlite3数据库的方法分析
Jul 16 Python
Random 在 Python 中的使用方法
Aug 09 Python
详解Python函数式编程—高阶函数
Mar 29 Python
详解Python sys.argv使用方法
May 10 Python
python读取Kafka实例
Dec 23 Python
python实现QQ邮箱发送邮件
Mar 06 Python
Python基于类路径字符串获取静态属性
Mar 12 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
Jun 24 Python
python PIL模块的基本使用
Sep 29 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模拟HTTP认证
2006/10/09 PHP
让PHP更快的提供文件下载的代码
2012/06/13 PHP
php.ini-dist 和 php.ini-recommended 的区别介绍(方便开发与安全的朋友)
2012/07/01 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
2016/01/09 PHP
javascript实现div的拖动并调整大小类似qq空间个性编辑模块
2012/12/12 Javascript
Jquery写一个鼠标拖动效果实现原理与代码
2012/12/24 Javascript
js/jQuery简单实现选项卡功能
2014/01/02 Javascript
js通过iframe加载外部网页的实现代码
2015/04/05 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
2015/06/24 Javascript
JS实现仿新浪微博发布内容为空时提示功能代码
2015/08/19 Javascript
JS实现超简单的仿QQ折叠菜单效果
2015/09/21 Javascript
JS控制静态页面之间传递参数获取参数并应用的简单实例
2016/08/10 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
Angular学习笔记之angular的$filter服务浅析
2016/11/12 Javascript
ES6新特性之Symbol类型用法分析
2017/03/31 Javascript
解决微信二次分享不显示摘要和图片的问题
2017/08/18 Javascript
js实现搜索栏效果
2018/11/16 Javascript
总结4个方面优化Vue项目
2019/02/11 Javascript
Vue中全局变量的定义和使用
2019/06/05 Javascript
Python translator使用实例
2008/09/06 Python
在python中的socket模块使用代理实例
2014/05/29 Python
python查询sqlite数据表的方法
2015/05/08 Python
Python实现约瑟夫环问题的方法
2016/05/03 Python
关于Python Tkinter Button控件command传参问题的解决方式
2020/03/04 Python
海淘零差价,宝贝全球购: 宝贝格子
2016/08/24 全球购物
美国Randolph太阳镜官网:美国制造的飞行员太阳镜和射击眼镜
2018/06/15 全球购物
德国电子产品购物网站:TechInTheBasket德国
2018/12/07 全球购物
班级年度安全计划书
2014/05/01 职场文书
反腐倡廉标语
2014/06/24 职场文书
幼儿园大班区域活动总结
2014/07/09 职场文书
青春励志演讲稿范文
2014/08/25 职场文书
财务部岗位职责范本
2015/04/14 职场文书
怒海潜将观后感
2015/06/11 职场文书
2015年秋季运动会加油稿
2015/07/22 职场文书
《春酒》教学反思
2016/02/22 职场文书
Python自动化工具之实现Excel转Markdown表格
2022/04/08 Python