如何优化这个霍夫曼代码函数?

时间:2016-10-30 17:29:54

标签: python python-3.x optimization huffman-code

函数的输入是这样的字典:

frec = {'a': 2, 'b': 4, ... , 'c': 1}

输出是霍夫曼抄本:

frec = {'a' : '00', 'b' : '01', ... , 'c': '0001'}

这就是功能:

def codice(frec):
    lista = []
    for carac,fr in frec.items():
        heappush(lista,(fr,0,carac))
    while len(lista) > 1:
        x1 = heappop(lista)    
        x2 = heappop(lista)  
        x3 = (x1[0]+x2[0],max(x1[1],x2[1])+1,[x1,x2])
        heappush(lista,x3)
    dic = {} 
    rdic = {}
    rama = [] 
    rama.append(lista[0]+('',))
    while len(rama) > 0:
        elem = rama.pop() 
        if type(elem[2]) == list:
            rama.append(elem[2][1]+(elem[-1]+'0',)) 
            rama.append(elem[2][0]+(elem[-1]+'1',))
        else:
            dic[elem[2]]=elem[-1]
            rdic[elem[-1]]=elem[2]
        pass     
    return dic,rdic

我试图使用理解列表进行优化,但是我用python :)进行了新手。感谢。

0 个答案:

没有答案