【发布时间】:2019-12-23 04:29:49
【问题描述】:
我需要帮助创建一个通过给定字典的函数。与该键关联的值可能是字典的另一个键。我需要这个函数来继续查找键,直到它到达一个没有关联值的键。
def follow_me(d, s):
while d:
if s in d:
return d[s]
我可以返回字典中 s 等于的值,但我不知道如何迭代它,直到我得到一个没有关联值的值。所以我可以得到 badger 是 doe 的值,但是我如何遍历字典直到我得到 fox 然后 fox to hen 等。
d = {'badger':'doe', 'doe':'fox', 'fox':'hen','hen':'flea',
'sparrow':'spider', 'zebra':'lion', 'lion':'zebra'}
print(follow_me(d, 'badger'))
print(follow_me(d, 'fox'))
print(follow_me(d, 'sparrow'))
print(follow_me(d, 'zebra'))
print(follow_me(d, 'aardvark'))
这就是我目前拥有的对我有意义的功能,因为我尝试过的其他一切都是错误的。
def follow_me(d, s):
while d:
if s in d:
return d[s]
输出需要是:
flea
flea
spider
aardvark
但我的代码现在正在生成:
doe
hen
spider
lion
【问题讨论】:
-
这种情况下保证不会发生
-
@Moormanly:在他们的例子中,
'lion'和'zebra'。我不确定他们希望它做什么。 -
哦,狮子和斑马他们希望它被打印为假,但我还没有满足例外情况,因为我不知道如何迭代它
-
我很确定您的代码不会打印
aardvark。当您进行最后一次示例调用时,您显示的函数将永远运行。 -
在您给出的示例代码中,如果
d是非空字典,则while d:等价于while True:,如果d是空字典,则while False:等价于while False:。这些都不是你想要的。您可以尝试while s in d:并在循环内更新s。
标签: python python-3.7