python打印字典树形_Python实现字典树
字典树,又称单词查找树,Trie 树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。
注:定义来自百度百科。
字典树的主要性质
它有 3 个基本性质:
根节点不包含字符,除根节点外每一个节点都只包含一个字符;
从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串;
每个节点的所有子节点包含的字符都不相同。
基本功能介绍
在接下来的内容里,我们将逐步介绍字典树的具体功能是如何实现的。
1. 创建 TrieNode 类
创建一个 TrieNode 的类,构建内置字典结构
具体实现代码如下
class TrieNode:
def __init__(self):
self.nodes = dict() # 构建字典
self.is_leaf = False
2. 添加 insert 函数
插入一个字到字典树中
具体实现代码如下:
def insert(self, word: str):
curr = self
for char in word:
if char not in curr.nodes:
curr.nodes[char] = TrieNode()
curr = curr.nodes[char]
curr.is_leaf = True
3. 添加 insert_many 函数
插入一列表的字到字典树中
具体实现代码如下:
def insert_many(self, words: [str]):
for word in words:
self.insert(word)
4. 添加 search 函数
在字典树里面查询一个字
具体实现代码如下:
def search(self, word: str):
curr = self
for char in word:
if char not in curr.nodes:
return False
curr = curr.nodes[char]
return curr.is_leaf
最终代码如下:
class TrieNode:
def __init__(self):
self.nodes = dict() # 构建字典
self.is_leaf = False
def insert(self, word: str):
curr = self
for char in word:
if char not in curr.nodes:
curr.nodes[char] = TrieNode()
curr = curr.nodes[char]
curr.is_leaf = True
def insert_many(self, words: [str]):
for word in words:
self.insert(word)
def search(self, word: str):
curr = self
for char in word:
if char not in curr.nodes:
return False
curr = curr.nodes[char]
return curr.is_leaf
用在统计和排序大量字符串,如自动机。字典树能做前缀搜索,在正则匹配,数据压缩,构建索引都可能用到。
python打印字典树形_Python实现字典树相关推荐
- python字典查询_python查询字典
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 开发准备cas 的 python sdk 包含了用于访问和操作 cas 的所有 ...
- python字典嵌套字典构造_python实现字典嵌套列表取值
python实现字典嵌套列表取值 如下所示: dict={'log_id': 5891599090191187877, 'result_num': 1, 'result': [{'probabilit ...
- python图的字典表示_Python dict字典精讲
Python 字典也是一个集合,但是其每个元素包含两部分--键和值,如图1所示: 图1:字典模型 和列表一样的是,字典对元素个数没有限制,可以动态添加和删除元素:和列表不同的是,字典对元素自动按照某种 ...
- python获取字典长度_Python基础-字典
字典的创建 字典是存放一系列键值对的数据结构,对标js中的对象,也对标java中的map. 现实中的例子就是通讯录,根据这个人的名字就可以得到他的电话号码. 定义字典的写法跟js中定义对象是一样的,两 ...
- python中字典使用_python中字典的使用
python中的字典的特性: 在字典中的元素是散列存放的,没有顺序, 在进行增删改查的时候使用字典中需要的关键字(key)即可. 一: 创建字典 1)直接定义一个: dict = {'ob1':'co ...
- python修改key名_python修改字典键(key)的方法
python字典中,值可任意更改:但键是唯一的,不支持直接修改.若真的需要修改字典中的键,可通过几种间接方式实现. 新建空白字典. info = {} 给字典添加键-值对. info["x& ...
- python dictionary怎么用_python Dictionary字典使用
一.dictionary数据类型的结构是:{key1:value1, key2:value2, ...},即键值对.字典的健必须是不可更改的类型,如字符串.数字.元祖等:而值则可以是任意的数据类型,而 ...
- python打印换行符_Python换行符以及如何在不使用换行符的情况下进行Python打印
python打印换行符 Welcome! The new line character in Python is used to mark the end of a line and the begi ...
- python 打印列表元素_Python程序以不同方式打印列表元素
python 打印列表元素 In this program – we are going to learn how can we print all list elements, print spec ...
最新文章
- 1Boost之TCP,Client and Server
- Kaggle API
- 【线上分享】超分辨技术在RTC领域面临的机遇与挑战
- python读取windows系统的文件后print乱码问题的解决
- 如何用Python破解验证码,适合新手练手
- metasploit基本使用方法
- POI (Apache POI)
- vue个人博客项目部署上线
- 错误解决:java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to star
- 使用js获取证券交易实时数据
- 包看包会的变量与数据类型
- 2020年6月TIOBE编程语言排名公布
- 我的 OneNote 入门心得
- 互联网寒冬来袭,面对裁员和竞争的双重压力,程序员该何去何从?
- 【Rochester】MongoDB的基本语法和使用
- 2022不一样的分享--行走的皮卡丘
- FTP在电脑和安卓设备间的妙用!
- (七十六):Masked Autoencoders Are Scalable Vision Learners
- TortoiseSVN服务端和客户端--百度云下载
- JDK的下载安装(含安装文件)
热门文章
- 域名,端口,IP总结
- android pd px sp 转换
- mysql 9 5.5.29_在CentOS 6.3中安装与配置Mysql-5.5.29的方法
- 基于JAVA+SpringMVC+Mybatis+MYSQL的企业计划管理系统
- 基于JAVA+SpringMVC+Mybatis+MYSQL的驾校预约信息管理系统
- 奇安信集团笔试题:二叉树的最近公共祖先(leetcode236),杀死进程(leetcode582)...
- 回想四叉树LOD地形(上)
- Java字符串与日期互转
- Creating a Pager Control for ASP.NET以及Dino Esposito 分页组件的一个 Bug
- Python稳基修炼的经典案例9(计算机二级、初学者必会turtle库例题)