一种自压缩、无依赖的trie基

bytetrie的Python项目详细描述


Build Status

比特特里

一个快速的、无依赖关系的、自压缩的trie,以256为基数,用纯python编写。在

Bytetrie允许在大量的键库中快速搜索前缀。每把钥匙都可以 与任意数据关联。它的特点是快速查找时间,但代价是 昂贵的插入。如果可以预先填充数据,则最好使用Bytetrie。 然而,由于其带内压缩,它也可以用于飞行 更新。在

钥匙

键是字节串。因此,trie中的每个节点最多可以有256个 儿童(基数)。密钥与utf-8和其他编码一起工作得很好 因为编码是一致的和确定的。也就是说,石墨烯簇 总是以相同的字节序列编码——即使标准允许 模棱两可。通常,只要使用相同的编码器 插入和查找。在

因为unicode字符串中的前缀搜索是 {bytetas}由unicode层^组成。在

数据

Bytetrie可以将任意python对象与键相关联。数据(或者更确切地说是 参考文献)保存在树上。不进行进一步处理。在

此外,bytrie允许多值尝试。然后每个键都与 任意对象的序列。在

性能

尽管在纯python中bytetrie是fast。筛选 geonames“所有国家”数据集 以Vienna开头的地方只需要512微秒 搜索12041359个地方的毫秒。相比之下,热身 在同一个数据集中进行ripgrep搜索需要三个数量级(400ms) 在同一台机器上。在

另一方面,建造trie大约需要20分钟,而且相当可观 记忆。此外,表演大多被收集所需的时间所压倒 终端节点。搜索越高,搜索结束(因此也就越多 结果前缀搜索产生)时间越长。有几个 低挂起的果实和进一步的性能改进是在 pipeline。在

依赖关系

没有。这就是重点。在

入门

通过pip安装bytetrie。在

pip install -U bytetrie

公共接口是ByteTrie,有两个方法insert和{}。 Find返回Terminals的列表,其中key和 可以检索节点。在

^{pr2}$

贡献

如果您想为bytetrie贡献力量,请随时向发送修补程序 弗里德尔网。或者,您可以在GitHub上发出pull请求 会被樱桃摘到我的树上。如果你有长远的计划 投稿给我一封邮件,让我可以访问孵化器存储库。在

Github用户

如果您在GitHub上访问此存储库,则您位于的镜像上 https://git.friedl.net/incubator/bytetrie。这面镜子会定期更新 我的其他GitHub镜像。在

就像我的其他孵化器项目一样,一旦我认为bytetrie是合理的 稳定主目录树将移到GitHub。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
从Java应用程序登录MySql   JavaGSON图形适配器和运行时适配器   java我可以在日期验证器程序的focusLost()中调用focusgoven()吗?   使用InMemoryTestContainerFactory时为JerseyTest设置baseUrl   java为什么通过安卓应用程序在facebook好友墙上发帖返回错误?   javajavafx:画一个摆动的低蚀刻边框可能吗?   调整大小过程中发生java OpenImaj OutOfMemoryError   java如何将结果集的行存储到HASHMAP中   在java库中使用依赖项注入好吗?   多线程java同步多线程问题   jdbc如何编写一个java应用程序,将一个sql查询和一个数字作为输入并启动它   java为什么不支持运行时。freeMemory()仅在创建大型对象时更改?   JaxB从XML到Java类的自动解析   JavaSpring表单与html表单   java无法使用DefaultHttpClient发送大文件