Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有一种方法可以使用输入来爬升嵌套字典?_Python_Python 3.x_Dictionary_Input_Nested - Fatal编程技术网

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

Python 有没有一种方法可以使用输入来爬升嵌套字典?,python,python-3.x,dictionary,input,nested,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 > tita

我开始收集游戏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_])

我一直在寻找解决办法,尽管我认为我的问题相当具体。谷歌帮不了我多少忙,除非我使用了错误或太不具体的搜索词。如果可以的话,请帮忙。

这个想法有什么建议吗?(未经测试) 通过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_])

谢谢只要你第一次把它拼对了,它就行了。=)