有没有一种方法可以使用输入来爬嵌套词典?

时间:2020-10-06 01:23:57

标签: python python-3.x dictionary input nested

我开始收集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并不会提供太多帮助。如果可以的话,请帮忙。

1 个答案:

答案 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_])