代码应该一直查找钥匙,直到找到没有密码的钥匙为止 对应的值。只有这样才能返回该密钥。如果在跟踪期间或未找到某个键时该键不可用,则必须返回最后一个键。你知道吗
我已经使用递归跟踪到了最终的键/值对,但是我不能返回最终的跟踪值。你知道吗
def rabbit_hole(d, word):
for key,val in d.items():
if key == word:
return rabbit_hole(d,val)
d = {"bat": "pig", "pig": "cat", "cat": "dog", "dog": "ant",
"cow": "bee", "bee": "elk", "elk": "fly", "ewe": "cod",
"cod": "hen", "hog": "fox", "fox": "jay", "jay": "doe",
"rat": "ram", "ram": "rat"}
print(rabbit_hole(d, "bat"))
预期结果:ant
实际结果:无(在这种情况下,我无法返回最后一个值“ant”)
我想这就是你要找的-
递归函数(您已经创建)中的一个重要概念是基本情况。基本情况是停止递归并关闭调用堆栈。在函数中,如果没有找到键,则函数不会返回任何值,在python中,这意味着它的计算结果为
None
。你知道吗您应该做的是在循环外以
return word
结束函数,这样如果函数没有在循环内返回,您就只返回找到的最后一个单词。你知道吗另外,与问题无关,但一个很好的音符。你循环浏览这些条目是在违背词典的目的。您应该做的是检查您要查找的单词是否在字典中,然后使用键访问器,或者使用
.get()
例如:或者
相关问题 更多 >
编程相关推荐