有一个列表列表,每个元素都是一个元组。概率。指定特定的元组元素

时间:2018-04-17 02:55:15

标签: python distance edit

def distances(a, b):
    """Calculate edit distance from a to b"""

    # declare matrix and set top left box to 0 and none
    cost = [[(0,0) for x in range(len(a)+1)] for y in range(len(b)+1)]
    cost[0][0] = (0, None)

    # fill in first row
    for i in range(1, len(a)+1):
        cost[i][0] = (i, Operation.DELETED)

    #fill in first column
    for j in range(1, len(b)+1):
        cost[0][j] = (j, Operation.INSERTED)

    # fill in rest of the table from left to right, one row at a time
    i = 1
    j = 1
    while i < len(a) + 1:
        while j < len(b) + 1:
            if a[i-1] == b[j-1]:
                cost[i][j] = (cost[i-1][j-1], Operation.SUBSTITUTED)
                j += 1
            else:
                subcost = min(cost[i-1][j][0], cost[i][j-1][0], cost[i-1][j-1][0])
                if subcost == cost[i-1][j][0]:
                    cost[i][j] = (cost[i-1][j][0] + 1, Operation.DELETED)
                    j += 1
                elif subcost == cost[i][j-1][0]:
                    cost[i][j] = (cost[i][j-1][0] + 1, Operation.INSERTED)
                    j += 1
                elif subcost == cost[i-1][j-1][0]:
                    cost[i][j] = (cost[i-1][j-1][0] + 1, Operation.SUBSTITUTED)
                    j += 1
        i += 1
        j = 1

    return cost

给我这条错误消息:

TypeError: '<' not supported between instances of 'tuple' and 'int' 

并指定

subcost = min(cost[i-1][j][0], cost[i][j-1][0], cost[i-1][j-1][0]) 

作为问题线
每个cost[i][j][0]都应该在第i个成本列表中指定第j个元组的第一个元素,它应该是一个整数,但它说它们是元组并且我没有得到这是为什么。

0 个答案:

没有答案