好吧,我做了一些阅读,现在应该重新表达我的问题:
我已经将我的josn重构为一个像dict这样的树:
[{
"id": "Bosniak",
"system":
{
"0": "Wurde ein Nieren Protokoll gemacht, ist <25% der Lesion KM aufnehmend, und ist kein Fettgewebe zu sehen\n(1) alles trifft zu?\n(2) trifft nicht zu",
"1": {"0": "KM-aufnehmende Lesion >3cm, heterogene Lesion, viel Verkalkung?\n(1) mind. eins davon trifft zu\n(2) trifft nicht zu",
"1":"Bosniak1", "2":"Bosniak II"},
"2": {"0": "Was ist zu sehen?\n(1) >25% KM-aufnehmend oder fettig\n(2) homogene Lesion 20 - 30 HU",
"1": "Bosniak IV", "2":"Bosnaik V"}
}
}]
在前面的步骤中,我在我的字典中调用了一个id,就像这个例子中的“Bosniak”。现在我想通过“system”键进行迭代,就像通过控制台输入Q& A一样,直到我到达列表的末尾(即“Bosniak II”)。
我有这个循环:
i = "1" #that is the index for the item with id "Bosniak" in my dict
while True:
qloop = input("Select an option: ", )
#probably here I need a recursive function
#or whatever where I can dynamically change my path,
# so that I can call items in my json dict until the
#end of a nested layer is reached
if #here I have some other code, not important
else:
print(data[i]["system"][qloop]["0"])
#if I type "1" it prints "KM-aufnehmende Lesion >3cm, heterogene Lesion, viel Verkalkung?\n(1) mind. eins davon trifft zu\n(2) trifft nicht zu"
break
我的控制台正在询问预期的输出“选择一个选项:,根据我的输入像dict一样迭代我的树,直到没有子层,它最终将打印“Bosniak II”
1条答案
按热度按时间aiazj4mn1#
当我尝试运行程序时,它向我抛出错误
NameError: name 'i' is not defined. Did you mean: 'id'?
而不是无限循环。在修复上述错误后,得到错误KeyError: '2'
,这是因为system
的Choice 1
和Choice 2
内的密钥2
。对现有代码进行了一些调整,以便成功运行,但如果提供确切的目标或用例,那就太好了。注意:根据调整,将关键字2
更新为'2'
数据变量dict,并添加了vari
,以便它可以递增。如果你给予输入作为
choice 1+3
,它会失败,因为我们没有从for循环中只获取system
的值。