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生成pdf文件的方法
Aug 04 Python
仅利用30行Python代码来展示X算法
Apr 01 Python
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
Dec 25 Python
linux环境下的python安装过程图解(含setuptools)
Nov 22 Python
django中的HTML控件及参数传递方法
Mar 20 Python
用Python编写一个高效的端口扫描器的方法
Dec 20 Python
python3.7简单的爬虫实例详解
Jul 08 Python
python基于Selenium的web自动化框架
Jul 14 Python
python并发编程多进程之守护进程原理解析
Aug 20 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
Dec 06 Python
Django 解决新建表删除后无法重新创建等问题
May 21 Python
python 读取.nii格式图像实例
Jul 01 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 socket实现的聊天室代码分享
2014/08/16 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
2016/03/09 PHP
thinkphp项目如何自定义微信分享描述内容
2017/02/20 PHP
比较简单实用的使用正则三种版本的js去空格处理方法
2007/11/18 Javascript
使用 Node.js 做 Function Test实现方法
2013/10/25 Javascript
JSON+HTML实现国家省市联动选择效果
2014/05/18 Javascript
Javascript让DEDECMS告别手写Tag
2014/09/01 Javascript
jQuery实现隔行背景色变色
2014/11/24 Javascript
深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP详解
2015/03/05 Javascript
js实现鼠标移到链接文字弹出一个提示层的方法
2015/05/11 Javascript
谈谈我对JavaScript DOM事件的理解
2015/12/18 Javascript
微信小程序 Button 组件详解及简单实例
2017/01/10 Javascript
vue.js之vue-cli脚手架的搭建详解
2017/05/05 Javascript
angularjs+bootstrap实现自定义分页的实例代码
2017/06/19 Javascript
JavaScript之Map和Set_动力节点Java学院整理
2017/06/29 Javascript
微信小程序wx.getImageInfo()如何获取图片信息
2018/01/26 Javascript
JS事件绑定的常用方式实例总结
2019/03/02 Javascript
javascript中如何判断类型汇总
2019/05/14 Javascript
JS中FileReader类实现文件上传及时预览功能
2020/03/27 Javascript
微信小程序实现加入购物车滑动轨迹
2020/11/18 Javascript
[02:11]完美世界DOTA2联赛10月28日赛事精彩集锦:来吧展示实力强劲
2020/10/29 DOTA
利用Python+Java调用Shell脚本时的死锁陷阱详解
2018/01/24 Python
python matlibplot绘制多条曲线图
2021/02/19 Python
python命令行参数用法实例分析
2019/06/25 Python
python绘制多个子图的实例
2019/07/07 Python
Python collections模块使用方法详解
2019/08/28 Python
Python django框架开发发布会签到系统(web开发)
2020/02/12 Python
CSS3 网页下拉菜单代码解释 中文翻译
2010/02/27 HTML / CSS
Adobe Html5 Extension开发初体验图文教程
2017/11/14 HTML / CSS
社区文化建设方案
2014/05/02 职场文书
实习护士自荐信
2014/06/21 职场文书
党员演讲稿
2014/09/04 职场文书
2015年小学总务工作总结
2015/07/21 职场文书
2019幼儿教师求职信(3篇)
2019/09/20 职场文书
【超详细】八大排序算法的各项比较以及各自特点
2021/03/31 Python
Windows Server 2008 修改远程登录端口以及配置防火墙
2022/04/28 Servers