我开始收集Subnautica游戏中的所有食谱,最初使用列表,后来使用嵌套字典。在一个熟人的帮助下,我设法使所有类别的完整列表成为可能,如下所示。
SRI #Subnautica Recipe Index
fabricator
mobile
habitat
vehicle
scanner
modification
cyclops
neptune
Enter a choice >
您输入名称,它会进入下一个类别和下一个类别,直到显示配方:
Enter a choice > titanium #user input
1 metal salvage
我的问题是,如果您碰巧输入了错误的内容,我不知道如何使输入能够“爬升”备份类别/词典。这是允许删除的代码。
def dive(dict_):
print()
for key in dict_:
print(key)
input_ = input("\nEnter a choice > ")
if input_ in dict_ and isinstance(dict_[input_], dict):
dive(dict_[input_])
else:
print(dict_[input_])
我一直在寻找解决方案,尽管我认为我的问题很具体。除非我使用了错误或过于具体的搜索字词,否则Google并不会提供太多帮助。如果可以的话,请帮忙。
答案 0 :(得分:0)
有什么想法吗? (未试) 通过dict跟踪父路径:
def dive(dict_, parents=[]):
print()
for key in dict_:
print(key)
if parents:
print('back')
input_ = input("\nEnter a choice > ")
if input_ == 'back' and parents:
dive(parents[-1], parents[:-1])
elif input_ in dict_ and isinstance(dict_[input_], dict):
dive(dict_[input_], parents+[dict_])
else:
print(dict_[input_])