Bonjour,
Je suis débutant en python, j'ai une petite question sur un endroit que je bloque. Dans le code suivant, je ne sais pas pourquoi le paramètre mapping dans la fonction compter_descendants_et_profond eur n'est pas considéré comme un dictionnaire alors que la fonction construire_mapping renvoie bien un dictionnaire. Je l'ai remarqué car le code me donne une erreur sur liste_enfants = mapping[nom]. Dans la variable nom je mets 'Nom1' et dans fichier je mets '[{"nom": "Nom1", "enfants": ["NomEnfant1", "NomEnfant2"]},{"nom": "Nom2", "enfants": ["NomEnfant3"]}]' .Pouvez-vous m'aider svp. Et dsl si le code et une peu long.
Code:import ast def construire_mapping(personnes, fichier) : dico = {} for dictionnaire in fichier: if personnes in dictionnaire.values() : dico[personnes] = dictionnaire["enfants"] return dico return 'pas de personne en ce nom' def compter_descendants_et_profondeur(nom, mapping, cache_compte = 0) : liste_enfants = mapping[nom] cache_compte += len(liste_enfants) return cache_compte + compter_descendants_et_profondeur(mapping[nom][0], construire_mapping(mapping[nom][0], fichier), cache_compte) nom = input() fichier = ast.literal_eval(input()) mapping = construire_mapping(nom, fichier) print(type(mapping )) print(compter_descendants_et_profondeur(nom, mapping))
-----