创建迭代函数的困难

2024-06-24 13:53:00 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 方法函数name类型列表字典排序顺序
3条回答

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

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

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

我认为这个递归函数可以帮助你。。。你知道吗

Order = []

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

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

相关问题 更多 >