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字符串对其居中显示的方法
Jul 11 Python
在Mac OS上搭建Python的开发环境
Dec 24 Python
Django Admin 实现外键过滤的方法
Sep 29 Python
flask入门之文件上传与邮件发送示例
Jul 18 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
Feb 17 Python
关于pytorch中全连接神经网络搭建两种模式详解
Jan 14 Python
Python @property装饰器原理解析
Jan 22 Python
jupyter notebook清除输出方式
Apr 10 Python
python中线程和进程有何区别
Jun 17 Python
python利用paramiko实现交换机巡检的示例
Sep 22 Python
Python运算符+与+=的方法实例
Feb 18 Python
深入浅析python3 依赖倒置原则(示例代码)
Jul 09 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调用dll的实例操作动画与代码分享
2012/08/14 PHP
PHP类中的魔术方法(Magic Method)简明总结
2014/07/08 PHP
php计算两个文件相对路径的方法
2015/03/14 PHP
Laravel重写用户登录简单示例
2016/10/08 PHP
php 判断过去离现在几年的函数(实例代码)
2016/11/15 PHP
php中get_magic_quotes_gpc()函数说明
2017/02/06 PHP
php workerman定时任务的实现代码
2018/12/23 PHP
laravel 模型查询按照whereIn排序的示例
2019/10/16 PHP
读jQuery之十三 添加事件和删除事件的核心方法
2011/08/23 Javascript
Jquery之Ajax运用 学习运用篇
2011/09/26 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
2015/04/15 Javascript
jQuery侧边栏实现代码
2016/05/06 Javascript
js剪切板应用clipboardData实例解析
2016/05/29 Javascript
BootStrap tooltip提示框使用小结
2016/10/26 Javascript
javascript 利用arguments实现可变长参数
2016/11/21 Javascript
Angular实现的简单查询天气预报功能示例
2017/12/27 Javascript
vue如何安装使用Quill富文本编辑器
2018/09/21 Javascript
JavaScript 2018 中即将迎来的新功能
2018/09/21 Javascript
js中的数组对象排序分析
2018/12/11 Javascript
[48:21]Mski vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
python里对list中的整数求平均并排序
2014/09/12 Python
Python实现快速多线程ping的方法
2015/07/15 Python
Python加密方法小结【md5,base64,sha1】
2017/07/13 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
2018/01/07 Python
python批量导入数据进Elasticsearch的实例
2018/05/30 Python
opencv实现图片模糊和锐化操作
2018/11/19 Python
Pycharm之快速定位到某行快捷键的方法
2019/01/20 Python
英国殿堂级有机护肤品牌:Rodial
2017/04/17 全球购物
告诉你怎样写创业计划书
2014/01/27 职场文书
审计主管岗位职责
2014/01/31 职场文书
西式婚礼主持词
2014/03/13 职场文书
小班评语大全
2014/05/04 职场文书
股东出资证明书(正规版)
2014/09/24 职场文书
2015年出纳个人工作总结
2015/04/02 职场文书
领导莅临指导欢迎词
2015/09/30 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书