Python-Huffman位压缩

Python-Huffman位压缩,python,list,nodes,Python,List,Nodes,我需要帮助。我做了一个哈夫曼压缩程序。例如,我输入“google”,我可以这样打印: Character | Frequency | Huffman Code ------------------------------------ 'g' | 2 | 0 'o' | 2 | 11 'l' | 1 | 101 'e' | 1 |

我需要帮助。我做了一个哈夫曼压缩程序。例如,我输入“google”,我可以这样打印:

Character | Frequency | Huffman Code
------------------------------------
'g'       |         2 |           0
'o'       |         2 |          11
'l'       |         1 |         101
'e'       |         1 |         100
我还需要打印组合位,因此如果我使用,它将:

011101100
这是错误的,因为据我所知,哈夫曼压缩应该是:

011110101100
Character | Frequency | Huffman Code
------------------------------------
'g'       |         2 |           0
'o'       |         2 |          11
'o'       |         2 |          11
'g'       |         2 |           0
'l'       |         1 |         101
'e'       |         1 |         100
因此,我的输出应该是:

011110101100
Character | Frequency | Huffman Code
------------------------------------
'g'       |         2 |           0
'o'       |         2 |          11
'o'       |         2 |          11
'g'       |         2 |           0
'l'       |         1 |         101
'e'       |         1 |         100
基本上,我需要根据我输入的内容来显示它。所以,如果我输入“test”,它也应该用相应的位垂直打印test,因为我只是附加这些位并显示它们。我如何做到这一点?以下是打印部分:

freq = {}
for c in word:
    if c in freq:
        freq[c] += 1
    else:
        freq[c] = 1

freq = sorted(freq.items(), key=lambda x: x[1], reverse=True)

if check:
    print (" Char | Freq ")
    for key, c in freq:
        print (" %4r | %d" % (key, c))

nodes = freq

while len(nodes) > 1:
    key1, c1 = nodes[-1]
    key2, c2 = nodes[-2]
    nodes = nodes[:-2]
    node = NodeTree(key1, key2)
    nodes.append((node, c1 + c2))
    nodes = sorted(nodes, key=lambda x: x[1], reverse=True)

if check:
    print ("left: %s" % nodes[0][0].nodes()[0])
    print ("right: %s" % nodes[0][0].nodes()[1])

huffmanCode = huffman(nodes[0][0])

print ("\n")
print (" Character | Frequency  | Huffman code ")
print ("---------------------------------------")

for char, frequency in freq:
   print (" %-9r | %10d | %12s" % (char, frequency, huffmanCode[char]))
另外,我知道我不应该对它们进行排序,我会删除排序部分,别担心