首页 > 解决方案 > 如何返回满足条件的字典中的最后一个值

问题描述

代码应继续查找键,直到找到没有对应值的键。只有这样才能返回该密钥。如果在跟踪期间密钥不可用或未找到,则必须返回最后一个密钥。

我已经使用递归跟踪到最终的键/值对,但我无法返回最终的跟踪值。

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”)

标签: pythondictionary

解决方案


我想这就是你要找的 -

dum = []    

def rabbit_hole(dic, word):    
    dum.append(word)

    if len(dum)>len(dic):
        print("Hey! this input is not right, there's no end to it..")
        return

    for key,val in dic.items():    
        if key == word:    
            return rabbit_hole(dic, val)
    return word

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": "mouse"}

print(rabbit_hole(d,"bat"))

推荐阅读