Bonjour à vous,
Pour commencer, je vais un peu me présenter et essayer de pas trop m'afficher. Il y a environ 4 semaines, j'ai commencé la lecture d'un livre sur les généralités de la programmation dans le cadre de ma formation de Médiamaticien. Le livre en question propose des exercices en python, j'ai donc approfondi mes connaissances grâce au tutoriel sur ce site (très beau travail d'ailleurs, merci).
Sa fait environ une semaine que je cherche réponse à un problème proposé par un collègue.
Problème posé :
"Il faut analyser la valeur de la clé 'a' de tous les dicos, un dictionnaire après l'autre. Si la valeur est égal (par ex. d1['a'] == d2['a']) je continue mon programme et analyse les valeurs des clés 'b' de ces mêmes dictionnaires. Si la valeur 'b' du premier dictionnaires (d1) est supérieur à la valeur du deuxième (d2), je supprime le dictionnaire (d2) et recommence ma boucle pour comparer les autres. Si la valeur de la valeur de d2 de la clé 'b' est plus grande, je supprime le dictionnaire d1.
Dans le cas ou les valeurs des clés 'a' ne sont pas égal, je passe directement au prochain dictionnaire et continue l'analyse en commencant toujours par la clé 'a'.
Désolé pour cette confusion de mots et de lettres, ce sera peut-être plus évident avec mon ébauche de code...
Python 3.2
Je travaille avec IDLE
Vu que j'incrémente la variable n de 1, l'IDLE m'affiche une erreur 'out of range' que je n'arrive pas à résoudre.
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 # Trois dictionnaires avec des clés similaires d1 = {"a":0, "b":6, "c":3, "d":12} d2 = {"a":1, "b":5, "c":5, "d":3} d3 = {"a":1, "b":6, "c":7, "d":9} d4 = {"a":2, "b":5, "c":7, "d":9} #Liste de mes dicos dicos = [d1,d2,d3,d4] #Je tri les dictionnaire en référence à la clé 'a' dicos = sorted(dicos, key=lambda k: k['a']) #Clé de référence pour 'a' key_a = 'a' #Création d'une liste temporaire pour y insérer mes valeurs pour chaque clés values_dico_A = [] #------------------------------------------ #Création d'une fonction qui permette l'analyse de la première condition, il faut que les valeurs de la clé 'a' des deux premiers dicos soit égal pour passer à la deuxième fonction milieuFx def debutFx (): n,max = 0, len(dicos) print (dicos) for dico in dicos: values_dico_A.append(dico[key_a]) print(values_dico_A) if values_dico_A[n] != values_dico_A[n+1]: print("1er if") n = n +1 elif values_dico_A[n] == values_dico_A[n+1]: print("Passe a la deuxième fonction") milieuFx() #------------------------------------------ key_b = 'b' values_dico_B = [] #------------------------------------------ #Je créer une deuxième fonction pour analyser la deuxième clé et continuer avec les autres dictionnaires // Mon soucis de compréhension débute par ici... def milieuFx (): for dico in dicos: values_dico_B.append(dico[key_b]) print(values_dico_B) if values_dico_B[n] > values_dico_B[n +1]: del dicos[n+1] print(dicos, "deuxième if") else: del dicos[n] print(dicos, "dernière condition") debutFx() print(debutFx(), milieuFx, end= "")
Mon but final dans l'exercide est d'avoir la clé 'a' de chaque dictionnaire avec une valeur unique et avec le plus grand score dans les autres clés. Et de pouvoir ajouter des dictionnaires dans ma liste avec les mêmes clés.
Dans tous les cas, merci pour votre lecture et si vous arrivez à m'aiguiller dans la bonne direction se serait avec plaisir.
Bien à vous.
Bonne semaine
Partager