我需要一些巧妙的方法将其变成递归函数。 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。
答案 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