生成哈夫曼码本

huffman的Python项目详细描述


生成哈夫曼码本!Huffman codes是将单个符号压缩成二进制序列的最佳方式,该二进制序列可以在不使用符号间分隔符的情况下被明确解码(它是“prefix-free”)。

(symbol, weight)格式提供一个2元组的iterable,生成一个huffman码本,作为字典以{symbol: code, ...}格式返回。

>>> huffman.codebook([('A', 2), ('B', 4), ('C', 1), ('D', 1))
{'A': '10', 'B': '0', 'C': '110', 'D': '111'}

如果您有一个iterable的符号,collections.Counter是一个方便的方法来对它们进行汇总。

>>> huffman.codebook(collections.Counter('man the stand banana man').items())
{' ': '111',
 'a': '10',
 'b': '0100',
 'd': '0110',
 'e': '11010',
 'h': '0101',
 'm': '1100',
 'n': '00',
 's': '11011',
 't': '0111'}

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

推荐PyPI第三方库


热门话题
文件加密和解密在Java中,无法进行解密   Java生成字符串的所有可能排列   在eclipse中运行项目时,java服务器无法启动   java Kafka spring侦听器标头上的spring验证   java最终版本和内存泄漏   多线程如何在Java游戏开发中暂停和恢复线程   可以在中使用类。ser java文件可在之后编辑。ser文件创建?   java输入流关闭(OpenJ9_11.0.8.10 debian x64上的fatjar/überjar)   java如何知道是否按下了2个按钮?JavaFX   java无法使用控制器外部的DAO查询数据库   在java中,如何将数组的一部分作为函数参数传递?   java比较图形值或结构   从Recyclerview适配器中的BaseFragment访问java arraylist,无需复制代码   无法验证在Go中创建的Java DSA签名,反之亦然   Java Swing应用程序消息对话框帮助   java匹配和提取字符串中的数据   eclipse为Java创建编译脚本   ArrayIndexOutofBoundException Java Android接收流式数据并存储在多维数组Java中   java JUnit5向后兼容JUnit4吗?