Bonjour.
Montre nous ton code s'il te plait (n'oublie pas de l'encapsuler entre les # du mode édition du message).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 import json with open('F:\\but\\Semestre2\\donneesbus.json') as fichier: data = json.load(fichier) print(data) #Création des fonctions pouvant se relever utiles pour les futures manipulations #Creation d'une liste contenant les noms des arrets def lst_arrets(): lst_arret = [] for cle,val in data.item(): lst_arret.append(cle) return lst_arret # Fonction nom permet dassocier le nom du sommet à son indice ind dans noms_arrets def nom(ind): for Key in dict: for value in dict[Key]: dict[Key]=value #permet dassocier l'indice de larrêt à son nom nom_som def indice_som():![]()
Ta première fonction comporte une erreur. On ne parle pas d'item sur un dictionnaire mais d'items :
Si tu as des messages d'erreur à l'exécution de ton code, montre les STP.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 def lst_arrets(): lst_arret = [] for cle,val in data.items(): lst_arret.append(cle) return lst_arret
Et concernant ta méthode lst_arrets, vu que tu ne récupère que les clés, pas besoin d'items :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 def lst_arrets(): lst_arret = [] for cle in data: lst_arret.append(cle) return lst_arret
Bonjour
Les captures d'écran ne nous intéressent pas. Comment veux-tu qu'on copie/teste ton code avec une capture? Qu'on le retape intégralement ligne à ligne?
Et heureusement que Arioch t'avait dit de mettre ton code entre balises #...
Une fonction doit être indépendante (donc ne pas dépendre de variables externes dites "globales"). Et à quoi sert "val" ???
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 def lst_arrets(data): lst_arret = [] for k in data.keys(): lst_arret.append(k) return lst_arret
Ou plus simplement def lst_arrets(data): return list(data.keys()) et là on se dit que l'utilité de la fonction est de plus en plus sujette à caution...
PS: Arioch utilise la syntaxe for k in data qui est équivalente à for k in data.keys() quand "data" est un dictionnaire
Mouais. Donc là, l'idée générale de la fonction c'est boucler sur chaque clef du dictionnaire, puis sur chaque valeur de la clef (alors que la valeur étant unique, boucler sur "chaque valeur" démontre un esprit assez particulier) pour ensuite réécrire les n valeurs de la clef dans la clef. C'est un peu comme le type qui se met les mains sous les pieds et qui tire en espérant s'envoler...
Ensuite dans le détail, outre que "ind" n'est absolument pas utilisé ici à quoi sert la boucle interne? Une clef de dictionnaire est toujours unique. Il s'ensuit que si tu remplis 50 fois le dictionnaire [key] chaque affectation écrase la précédente
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 >>> ddd=dict() >>> ddd["toto"]=123 >>> ddd["toto"]=456 >>> ddd["toto"]=789 >>> print(ddd) {'toto': 789}
De plus si dict[Key] n'est pas itérable, la boucle for value in dict[Key] va planter lamentablement
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 >>> ddd={"toto" : 123} >>> for value in ddd["toto"]: print(value) ... Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'int' object is not iterable
Et enfin "dict" étant un nom de type, ce n'est pas un nom de variable donc for Key in dict lui-même ne fonctionnera pas
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 >>> for k in dict: print(k) ... Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'type' object is not iterable
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Merci beaucou à Sve@r et à Arioch votre aide et votre enseignant m'ont faire comprendre beaucoup de chose
Partager