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 相关文章推荐
linux 下实现python多版本安装实践
Nov 18 Python
python中urllib模块用法实例详解
Nov 19 Python
Python操作Word批量生成文章的方法
Jul 28 Python
在MAC上搭建python数据分析开发环境
Jan 26 Python
python实现手机通讯录搜索功能
Feb 22 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
Jun 19 Python
python2与python3爬虫中get与post对比解析
Sep 18 Python
python 使用while写猜年龄小游戏过程解析
Oct 07 Python
利用Python产生加密表和解密表的实现方法
Oct 15 Python
pytorch实现Tensor变量之间的转换
Feb 17 Python
python 算法题——快乐数的多种解法
May 27 Python
Python FuzzyWuzzy实现模糊匹配
Apr 28 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
我的论坛源代码(二)
2006/10/09 PHP
jQuery之浮动窗口实现代码(两种方法)
2010/09/08 Javascript
IE6/7/8/9不支持exec的简写方式
2011/05/25 Javascript
javascript中数组的concat()方法使用介绍
2013/12/18 Javascript
js实时获取并显示当前时间的方法
2015/07/31 Javascript
微信JSSDK上传图片
2015/08/23 Javascript
每天一篇javascript学习小结(Date对象)
2015/11/13 Javascript
javascript解析ajax返回的xml和json格式数据实例详解
2017/01/05 Javascript
微信小程序中多个页面传参通信的学习与实践
2017/05/05 Javascript
JS表单提交验证、input(type=number) 去三角 刷新验证码
2017/06/21 Javascript
vue中如何去掉空格的方法实现
2018/11/09 Javascript
layui 实现table翻页滚动条位置保持不变的例子
2019/09/05 Javascript
ES2020 新特性(种草)
2020/01/12 Javascript
[01:02:10]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第一局
2016/02/26 DOTA
[42:50]NB vs VP 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[04:32]玩具屠夫中文语音节选
2020/08/23 DOTA
Python实用日期时间处理方法汇总
2015/05/09 Python
Python实现利用163邮箱远程关电脑脚本
2018/02/22 Python
使用Python更换外网IP的方法
2018/07/09 Python
python实现归并排序算法
2018/11/22 Python
解决python文件双击运行秒退的问题
2019/06/24 Python
Python Matplotlib 基于networkx画关系网络图
2019/07/10 Python
PyCharm MySQL可视化Database配置过程图解
2020/06/09 Python
python处理写入数据代码讲解
2020/10/22 Python
Python在后台自动解压各种压缩文件的实现方法
2020/11/10 Python
利用python实现汉诺塔游戏
2021/03/01 Python
css3实现平移效果(transfrom:translate)的示例
2020/11/13 HTML / CSS
浅谈HTML5 defer和async的区别
2016/06/07 HTML / CSS
预订旅游活动、景点和旅游:GetYourGuide
2019/09/29 全球购物
C++如何引用一个已经定义过的全局变量
2014/08/25 面试题
电信营业员自我评价分享
2014/01/17 职场文书
党员民主评议总结
2014/10/20 职场文书
2015年乡镇发展党员工作总结
2015/03/31 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书
golang DNS服务器的简单实现操作
2021/04/30 Golang
Python爬虫之自动爬取某车之家各车销售数据
2021/06/02 Python