创建迭代函数的困难

时间:2013-01-03 10:40:41

标签: python recursion for-loop

我需要一些巧妙的方法将其变成递归函数。 D是一个带键的字典,需要匹配a,b,c的..

D的键只是随机顺序的数字 - 它们需要按特定的顺序排序并放入一个列表,函数“findKeyForLargestValue”使它们成为它们。

这是我的原始功能(不适用于所有类型的词典)

def findOrder(name,D):
    Order=[name]
    a=findKeyForLargestValue(D[name])
    b=findKeyForLargestValue(D[a])
    c=findKeyForLargestValue(D[b])
    d=findKeyForLargestValue(D[c])
    e=findKeyForLargestValue(D[d])
    f=findKeyForLargestValue(D[e])
    Order.append(a)
    Order.append(b)
    Order.append(c)
    Order.append(d)
    Order.append(e)
    Order.append(f)
    return Order

输出必须是这样的列表:

['4', '2', '5', '1', '6', '3']

它需要能够遍历任何类型的D。

3 个答案:

答案 0 :(得分:0)

我认为这个递归函数可以帮助你......

Order = []

def findOrder(name, D):
    Order.append(name)
    try:
        other = findKeyForLargestValue(D[name])
    except:
        return
    findOrder(other, D)

findOrder(name, D)

答案 1 :(得分:0)

findOrder添加一个参数,告诉它迭代的次数,然后执行此操作:

def findOrder(name, D, count):
    Order = [name]
    for i in range(count):
        name = findKeyForLargestValue(D[name])
        Order.append(name)
    return Order

这应该做你想要的(如果我不误解这个问题)

答案 2 :(得分:0)

def findOrder(name,D):
    myList = [name]
    for i in xrange(6): 
        new = findKeyForLargestValue(D[myList[-1]])
        myList.append(new)
    return myList