Я хочу перебрать вложенный словарь (который вы можете увидеть ниже):
bsp = {'bewohnen': {'lemma': 'bewohnen', 'pos': 'VFIN', 'attributes': {'type': 'Full', 'person': '3', 'number': 'Pl', 'tense': 'Pres', 'mood': 'Ind'}},
'bewirtschaften': {'lemma': 'bewirtschaften', 'pos': 'VFIN', 'attributes': {'type': 'Full', 'person': '3', 'number': 'Pl', 'tense': 'Pres', 'mood': 'Ind'}},
'die': {'lemma': 'die', 'pos': 'ART', 'attributes': {'type': 'Def', 'case': 'Nom', 'number': 'Pl', 'gender': 'Masc'}}, 'vier': {'lemma': 'vier', 'pos': 'CARD', 'attributes': None},
'Viertel': {'lemma': 'Viertel', 'pos': 'N', 'attributes': {'type': 'Nom', 'case': 'Nom', 'number': 'Pl', 'gender': 'Neut'}}}
#Code:
def iterdict(d, verbs={"all":0,"pres":0}):
for k,v in d.items():
if isinstance(v, dict):
verbs = iterdict(v, verbs)
elif k == "tense":
verbs["all"]+= 1
if v == "Pres":
verbs["pres"]+= 1
return verbs
return verbs["pres"]//verbs["all"]
print(iterdict(bsp))
Меня интересует подсчет результатов (если ключ становится «напряженным», а значение получает «Pres») в словаре, то есть, если процесс рекурсии завершен, возвращается как
return verbs["pres"]//verbs["all"]
но при устранении неполадок я увидел, что он даже не считается должным образом, словарь "глаголы" остается на 0 / 0.
Что-то должно быть не так с моей рекурсией, я новичок, и я просто не знаю, что мне нужно сделать, чтобы это сделать.