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切片操作实例分析
Mar 16 Python
python逐行读写txt文件的实例讲解
Apr 03 Python
python绘制散点图并标记序号的方法
Dec 11 Python
python消费kafka数据批量插入到es的方法
Dec 27 Python
Python 处理图片像素点的实例
Jan 08 Python
Python中print和return的作用及区别解析
May 05 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
Aug 02 Python
简单了解Pandas缺失值处理方法
Nov 16 Python
如何把外网python虚拟环境迁移到内网
May 18 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
Jun 30 Python
Python实现七个基本算法的实例代码
Oct 08 Python
pandas时间序列之pd.to_datetime()的实现
Jun 16 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 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
2010/10/22 PHP
PHP版国家代码、缩写查询函数代码
2011/08/14 PHP
PHP 实现代码复用的一个方法 traits新特性
2015/02/22 PHP
php接口数据加密、解密、验证签名
2015/03/12 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
2015/03/13 PHP
教你在header中隐藏php的版本信息
2016/08/10 PHP
PHP实现上传多文件示例代码
2017/02/20 PHP
JavaScript高级程序设计(第3版)学习笔记2 js基础语法
2012/10/11 Javascript
浅谈JavaScript字符集
2014/05/22 Javascript
javascript将浮点数转换成整数的三个方法
2014/06/23 Javascript
解析javascript瀑布流原理实现图片滚动加载
2016/03/10 Javascript
JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)
2016/06/17 Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
2016/11/26 Javascript
神级程序员JavaScript300行代码搞定汉字转拼音
2017/05/20 Javascript
JavaScript中正则表达式使数字、中文或指定字符高亮显示
2017/10/31 Javascript
vue-cli3.0 特性解读
2018/04/22 Javascript
监控微信小程序中的慢HTTP请求过程详解
2019/07/05 Javascript
layui use 定义js外部引用函数的方法
2019/09/26 Javascript
vue 封装面包屑组件教程
2020/11/16 Javascript
[01:14]DOTA2亚洲邀请赛 ShowOpen
2015/02/07 DOTA
[01:35]2018年度CS GO最佳战队-完美盛典
2018/12/17 DOTA
Python多线程结合队列下载百度音乐的方法
2015/07/27 Python
Python中list初始化方法示例
2016/09/18 Python
Python编程之微信推送模板消息功能示例
2017/08/21 Python
python中的迭代和可迭代对象代码示例
2017/12/27 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
2019/09/04 Python
python gui开发——制作抖音无水印视频下载工具(附源码)
2021/02/07 Python
matplotlib绘制正余弦曲线图的实现
2021/02/22 Python
利用 CSS3 实现的无缝轮播功能代码
2017/09/25 HTML / CSS
DJI大疆德国官方商城:大疆无人机
2018/09/01 全球购物
Conforama西班牙:您的家具、装饰和电器商店
2020/02/21 全球购物
写出二分查找算法的两种实现
2013/05/13 面试题
2014年团员学习十八大思想汇报
2014/09/13 职场文书
go使用Gin框架利用阿里云实现短信验证码功能
2021/08/04 Golang
TV动画《史上最强大魔王转生为村民A》番宣CM公布
2022/04/01 日漫
Flink 侧流输出源码示例解析
2022/09/23 Servers