python哈夫曼压缩与解压算法
压缩
from bitarray import bitarray
import random
import json
class Node(object):
"""docstring for Node"""
left=None
right=None
times=0
char = ''
parent=None
def __init__(self):
super(Node, self).__init__()
def countTimes(str):
times = {
}
for i in range(0,len(str)):
if (not str[i] in times):
times[str[i]]=1
else:
times[str[i]]+=1
return sorted(times.items(),key = lambda x:x[1])
def getTree(data):
temp=data[:]
head= None
nodes = []
for x in temp:
tempNode = Node()
tempNode.char = x[0]
tempNode.times = x[1]
nodes.append(tempNode)
while len(nodes)>=2:
nodes = sorted(nodes,key= lambda x:x.times)
nums = nodes[