Python:typeerror:无法排序的类型

时间:2017-03-07 21:22:37

标签: python

我试图在我的3.5 python环境中运行这个程序,但它会给我这个错误: " typeerror:无法排序的类型",第33行:

heappush(tree, (total_prob, x, y))

这是程序

# Native binary tree implementation
from heapq import heapify, heappop, heappush

def printCodes(t, code_str = ''):
    '''
    Accept the root node of a 'heapq' tree and print the Huffman codes.
    This function uses recursion to build the codes strings.
    '''
    if len(t) < 3:
        print('%s: %s' % (t[1], code_str))
    else:
        printCodes(t[1], code_str + '0')
        printCodes(t[2], code_str + '1')

# Initialize the input (data taken from 3.20)
tree = [
    [0.07, 'a'],
    [0.09, 'b'],
    [0.12, 'c'],
    [0.22, 'd'],
    [0.23, 'e']
]

# Convert the input into a binary tree
heapify(tree)

# Sort the tree into a valid Huffman tree.
# To do this, pop two nodes, then push them back into the tree under a
# node with the combined total probability
while len(tree) > 1:
    x = heappop(tree)
    y = heappop(tree)
    total_prob = x[0] + y[0]
    heappush(tree, (total_prob, x, y))

# Output
printCodes(tree[0])

1 个答案:

答案 0 :(得分:0)

将列表与元组进行比较。像这样创建树结构应该解决它:

tree = [
    (0.07, 'a'),
    (0.09, 'b'),
    (0.12, 'c'),
    (0.22, 'd'),
    (0.23, 'e'),
]