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 相关文章推荐
17个Python小技巧分享
Jan 23 Python
简单谈谈Python中函数的可变参数
Sep 02 Python
python框架django基础指南
Sep 08 Python
Python中标准模块importlib详解
Apr 16 Python
matplotlib绘图实例演示标记路径
Jan 23 Python
pyhton列表转换为数组的实例
Apr 04 Python
Python发送邮件功能示例【使用QQ邮箱】
Dec 04 Python
python cumsum函数的具体使用
Jul 29 Python
Django 导出项目依赖库到 requirements.txt过程解析
Aug 23 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
Sep 04 Python
pytorch 多分类问题,计算百分比操作
Jul 09 Python
Python实现学生管理系统(面向对象版)
Jun 24 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
星际争霸 Starcraft 游戏介绍
2020/03/14 星际争霸
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
2013/06/25 PHP
ThinkPHP中使用Ueditor富文本编辑器
2015/09/02 PHP
PHP函数checkdnsrr用法详解(Windows平台用法)
2016/03/21 PHP
颜色选择器 Color Picker,IE,Firefox,Opera,Safar
2010/11/25 Javascript
javascript 日期时间 转换的方法
2013/02/21 Javascript
javascript仿php的print_r函数输出json数据
2013/09/13 Javascript
js Array操作的最简短最容易理解方法
2013/12/09 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
2016/04/11 Javascript
angular forEach方法遍历源码解读
2017/01/25 Javascript
Jquery中attr与prop的区别详解
2017/05/27 jQuery
微信小程序 空白页重定向解决办法
2017/06/27 Javascript
详解VUE中常用的几种import(模块、文件)引入方式
2018/07/03 Javascript
vue3.0 CLI - 3.2 路由的初级使用教程
2018/09/20 Javascript
node.js文件操作系统实例详解
2019/11/05 Javascript
JS函数基本定义与用法示例
2020/01/15 Javascript
js 图片懒加载的实现
2020/10/21 Javascript
[53:50]CHAOS vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
[36:16]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.19
2020/12/24 DOTA
python使用multiprocessing模块实现带回调函数的异步调用方法
2015/04/18 Python
简单介绍Python中用于求最小值的min()方法
2015/05/15 Python
python实现爬虫统计学校BBS男女比例(一)
2015/12/31 Python
Python数据结构与算法之图结构(Graph)实例分析
2017/09/05 Python
详解Python核心编程中的浅拷贝与深拷贝
2018/01/07 Python
python 画三维图像 曲面图和散点图的示例
2018/12/29 Python
Python实现的KMeans聚类算法实例分析
2018/12/29 Python
tensorflow生成多个tfrecord文件实例
2020/02/17 Python
python中用Scrapy实现定时爬虫的实例讲解
2021/01/18 Python
10张动图学会python循环与递归问题
2021/02/06 Python
iPhoneX安全区域(Safe Area)底部小黑条在微信小程序和H5的屏幕适配
2020/04/08 HTML / CSS
西部世纪.net笔试题面试题
2014/04/03 面试题
取保候审保证书
2014/04/30 职场文书
青年教师师德演讲稿
2014/08/26 职场文书
大学生团员个人总结
2015/02/14 职场文书
什么是检讨书?检讨书的格式及范文
2019/11/05 职场文书
联想win10摄像头打不开怎么办?win10笔记本摄像头打不开解决办法
2022/04/08 数码科技