Python数据结构与算法之字典树实现方法示例


Posted in Python onDecember 13, 2017

本文实例讲述了Python数据结构与算法之字典树实现方法。分享给大家供大家参考,具体如下:

class TrieTree():
  def __init__(self):
    self.root = {}
  def addNode(self,str):
    # 树中每个结点(除根节点),包含到该结点的单词数,以及该结点后面出现字母的键
    nowdict = self.root
    for i in range(len(str)):
      if str[i] not in nowdict:  # 发现新的组合方式
        nowdict[str[i]] = {'count':0,'prefix':str[:i+1]}
      nowdict = nowdict[str[i]]  # 转移到下一个结点
    nowdict['count'] += 1
  def countWord(self,str):
    # 返回输入单词在树中出现的次数
    nowdict = self.root
    for s in str:
      if s not in nowdict:
        return 0
      nowdict = nowdict[s]  # 匹配当前结点,转下一个结点
    # 到了这一步证明单词存在
    return nowdict['count']
if __name__=="__main__":
  pass
  Text = ['b','abc','abd','bcd','abcd','efg','hii','bcd']
  t = TrieTree()
  for str in Text:
    t.addNode(str)
  print t.countWord('bcd')
>>> 2

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python算法学习之计数排序实例
Dec 18 Python
python中使用pyhook实现键盘监控的例子
Jul 18 Python
简单的抓取淘宝图片的Python爬虫
Dec 25 Python
Python实现的HTTP并发测试完整示例
Apr 23 Python
Python的Django框架中使用SQLAlchemy操作数据库的教程
Jun 02 Python
使用Python监控文件内容变化代码实例
Jun 04 Python
Python3 Tkinkter + SQLite实现登录和注册界面
Nov 19 Python
Python3.6 + TensorFlow 安装配置图文教程(Windows 64 bit)
Feb 24 Python
python 19个值得学习的编程技巧
Aug 15 Python
python绘制趋势图的示例
Sep 17 Python
Python中Yield的基本用法
Oct 18 Python
解决PyCharm无法使用lxml库的问题(图解)
Dec 22 Python
Python数据结构与算法之完全树与最小堆实例
Dec 13 #Python
python+VTK环境搭建及第一个简单程序代码
Dec 13 #Python
VTK与Python实现机械臂三维模型可视化详解
Dec 13 #Python
python+pygame简单画板实现代码实例
Dec 13 #Python
Python实现简单的语音识别系统
Dec 13 #Python
关于反爬虫的一些简单总结
Dec 13 #Python
Python自动化运维_文件内容差异对比分析
Dec 13 #Python
You might like
FCKeditor的安装(PHP)
2007/01/13 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
2014/05/29 PHP
PHP动态输出JavaScript代码实例
2015/02/12 PHP
php分割合并两个字符串的函数实例
2015/06/19 PHP
PHP中Enum(枚举)用法实例详解
2015/12/07 PHP
php HTML无刷新提交表单
2016/04/05 PHP
PHP实现查询手机归属地的方法详解
2017/04/28 PHP
javaScript对象和属性的创建方法
2007/01/15 Javascript
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
2011/12/08 Javascript
探讨jQuery的ajax使用场景(c#)
2013/12/03 Javascript
javascript中bind函数的作用实例介绍
2014/09/28 Javascript
微信企业号开发之微信考勤Cookies的使用
2015/09/11 Javascript
js获取上传文件的绝对路径实现方法
2016/08/02 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
2016/10/27 Javascript
jQuery实现二维码扫描功能
2017/01/09 Javascript
利用Vue v-model实现一个自定义的表单组件
2017/04/27 Javascript
Typescript 中的 interface 和 type 到底有什么区别详解
2019/06/18 Javascript
详解python里使用正则表达式的全匹配功能
2017/10/19 Python
python socket网络编程之粘包问题详解
2018/04/28 Python
python hook监听事件详解
2018/10/25 Python
搞清楚 Python traceback的具体使用方法
2019/05/13 Python
python隐藏终端执行cmd命令的方法
2019/06/24 Python
在脚本中单独使用django的ORM模型详解
2020/04/01 Python
jupyter notebook 多行输出实例
2020/04/09 Python
python爬虫容易学吗
2020/06/02 Python
python实现将中文日期转换为数字日期
2020/07/14 Python
深入理解css属性的选择对动画性能的影响
2016/04/20 HTML / CSS
戴尔新加坡官网:Dell Singapore
2020/12/13 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述
2013/03/30 面试题
服务承诺书格式
2014/05/21 职场文书
服装设计专业求职信
2014/06/16 职场文书
k8s部署redis cluster集群的实现
2021/06/24 Redis
vite+vue3.0+ts+element-plus快速搭建项目的实现
2021/06/24 Vue.js
MySQL 1130异常,无法远程登录解决方案详解
2021/08/23 MySQL
漫画「你在春天醒来」第10卷封面公开
2022/03/21 日漫
Vue操作Storage本地化存储
2022/04/29 Vue.js