-2

我需要一些聪明的方法来把它变成一个递归函数。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。

4

3 回答 3

0

添加一个参数来findOrder告诉它迭代多少次,然后执行以下操作:

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

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

于 2013-01-03T11:03:13.607 回答
0

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

Order = []

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

findOrder(name, D)
于 2013-01-03T10:59:42.003 回答
0
def findOrder(name,D):
    myList = [name]
    for i in xrange(6): 
        new = findKeyForLargestValue(D[myList[-1]])
        myList.append(new)
    return myList         
于 2013-01-03T11:03:41.777 回答