用于创建小型移位字典的递归代码

时间:2014-02-06 21:13:33

标签: python recursion

我在递归函数中尝试在字典中创建一个移位表:

def createShiftTable(alphabet,T,shiftT):
    if not T:
        for char in alphabet:
            shiftT[char] = len(T)+1
        return shiftT
    else:
        return createShiftTable(alphabet,T[1:],shiftT)
        shiftT[T[0]] = len(T) 


al=['a','b','c','d']
T = "aaabbdddaaba"
print(createShiftTable(al,T,{}))

这将返回{'a': 1, 'c': 1, 'b': 1, 'd': 1}
我希望它返回{'a': 1, 'c': 13, 'b': 2, 'd': 5}

非递归,以下工作正常,但如何让上述递归函数工作?

def createShiftTableX(alphabet,T):
    shiftT={}
    for char in al:
        shiftT[char] = len(T)+1   
    for i in range(len(T)):
        shiftT[T[i]] = len(T)-i    

    return shiftT

al=['a','b','c','d']
T = "aaabbdddaaba"
print(createShiftTableX(al,T))

2 个答案:

答案 0 :(得分:1)

这个怎么样:

def createShiftTableX(alphabet, T):
    l = len(T)
    for c in alphabet:
        i = T.find(c)
        if i<0:
            yield l
        else:
            yield i+1

al=['a','b','c','d']
T = "aaabbdddaaba"
print(list(createShiftTableX(al,T)))

答案 1 :(得分:-1)

您应该在调试器中运行它,或者放入一些日志记录或打印语句来查看它实际上在做什么。