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实现类级属性(Property)详解
Sep 18 Python
Python实现合并字典的方法
Jul 07 Python
Python中遍历字典过程中更改元素导致异常的解决方法
May 12 Python
Python实现购物系统(示例讲解)
Sep 13 Python
Python基于whois模块简单识别网站域名及所有者的方法
Apr 23 Python
mac 安装python网络请求包requests方法
Jun 13 Python
Python Grid使用和布局详解
Jun 30 Python
python3实现小球转动抽奖小游戏
Apr 15 Python
创建Django项目图文实例详解
Jun 06 Python
利用python开发app实战的方法
Jul 09 Python
django项目用higcharts统计最近七天文章点击量
Aug 17 Python
matplotlib quiver箭图绘制案例
Apr 17 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集成百度Ueditor 1.4.3
2014/11/23 PHP
PHP中require和include路径问题详解
2014/12/25 PHP
php微信开发之上传临时素材
2016/06/24 PHP
PHP 输出缓冲控制(Output Control)详解
2016/08/25 PHP
php数组指针函数功能及用法示例
2020/02/11 PHP
纯js实现重发验证码按钮倒数功能
2015/04/21 Javascript
javascript跨域总结之window.name实现的跨域数据传输
2015/11/01 Javascript
JavaScript重定向URL参数的两种方法小结
2016/10/19 Javascript
JS 实现Base64编码与解码实例详解
2016/11/07 Javascript
jQuery Validate设置onkeyup验证的实例代码
2016/12/09 Javascript
Bootstrap 模态框实例插件案例分析
2016/12/28 Javascript
[js高手之路]设计模式系列课程-发布者,订阅者重构购物车的实例
2017/08/29 Javascript
微信小程序wx.request实现后台数据交互功能分析
2017/11/25 Javascript
解决vue中虚拟dom,无法实时更新的问题
2018/09/15 Javascript
vue input实现点击按钮文字增删功能示例
2019/01/29 Javascript
vue.js自定义组件实现v-model双向数据绑定的示例代码
2020/01/08 Javascript
微信小程序实现吸顶特效
2020/01/08 Javascript
微信小程序实现列表的横向滑动方式
2020/07/15 Javascript
js在HTML的三种引用方式详解
2020/08/29 Javascript
Python 字典dict使用介绍
2014/11/30 Python
老生常谈Python进阶之装饰器
2017/05/11 Python
对python pandas读取剪贴板内容的方法详解
2019/01/24 Python
Python高级特性——详解多维数组切片(Slice)
2019/11/26 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
python3 Scrapy爬虫框架ip代理配置的方法
2020/01/17 Python
Python3自定义http/https请求拦截mitmproxy脚本实例
2020/05/11 Python
凯特方迪化妆品官网:Kat Von D Beauty
2016/11/15 全球购物
Oroton中国官网:澳洲知名奢侈配饰品牌
2017/03/26 全球购物
非常详细的C#面试题集
2016/07/13 面试题
十佳少年事迹材料
2014/12/25 职场文书
社区安全温馨提示语
2015/07/14 职场文书
美容院员工规章制度
2015/08/05 职场文书
导游词之广东佛山(南风古灶)
2019/09/24 职场文书
Oracle笔记
2021/04/05 Oracle
一文搞懂python异常处理、模块与包
2021/06/26 Python
使用Python开发冰球小游戏
2022/04/30 Python