IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Dictionnaire imbriqué d'étudiants


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 23
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2021
    Messages : 5
    Par défaut Dictionnaire imbriqué d'étudiants
    Bonjour, j'ai créé un dictionnaire imbriqué de cette forme :
    {'21390699': {'nm': 'Chollet', 'pr': 'Lucile', 'gr': 'G08A', 'moy': -1}, '21401654': {'nm': 'Douard', 'pr': 'Megane', 'gr': 'G03A', 'moy': 6.8}, '21197190': {'nm': 'Gehanne', 'pr': 'Leah', 'gr': 'G07B', 'moy': 13.07}, '21110959': {'nm': 'Webb', 'pr': 'Yawa', 'gr': 'G03A', 'moy': -1}, '21293570': {'nm': 'Petit', 'pr': 'Philippe', 'gr': 'G01A', 'moy': 9.9}, '21298658': {'nm': 'Pedrono', 'pr': 'Mathilde', 'gr': 'G08B', 'moy': -1}, '21293319': {'nm': 'Rolland', 'pr': 'Emilie', 'gr': 'G01A', 'moy': 8.79}, '21194533': {'nm': 'Le Nouys', 'pr': 'Lucile', 'gr': 'G03A', 'moy': 9.26}}

    J'ai en clé le numéro étudiant et en valeur les informations concernant celui-ci.
    Je cherche à faire la moyenne de chaque groupe.
    J'avais pensé à faire un dictionnaire où la clé serait le groupe et la valeur la liste des notes associée mais je n'arrive pas à mettre à cela en place.
    Est ce que vous pourriez m'aider ?

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par Marie_gbt Voir le message
    J'avais pensé à faire un dictionnaire où la clé serait le groupe et la valeur la liste des notes associée
    C'est une bonne idée.

    Citation Envoyé par Marie_gbt Voir le message
    mais je n'arrive pas à mettre à cela en place. Est ce que vous pourriez m'aider ?
    Et vous coincez sur quoi?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 23
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2021
    Messages : 5
    Par défaut
    J'étais partie sur cette définition de fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def moyenne_groupe(dico):
        dico_groupe ={}
        liste_notes=[]
        for c in dico.keys():
            if dico[c]["gr"] not in dico_groupe :
                dico_groupe[dico[c]["gr"]] = dico[c]["moy"]
            else :
                liste_notes.append(dico[c]["moy"])
                dico_groupe[dico[c]["gr"]] = liste_notes
    Sauf que je n'arrive pas à adapter la liste de notes selon le groupe ce qui me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {'G08A': -1, 'G03A': [-1, 8.79, 9.26], 'G07B': 13.07, 'G01A': [-1, 8.79, 9.26], 'G08B': -1}

  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 23
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2021
    Messages : 5
    Par défaut
    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
    def moyenne_groupe(dico):
        dico_groupe ={}
        nb = 0
        notes = 0
        for c in dico.keys():
            if dico[c]["gr"] not in dico_groupe :
                dico_groupe[dico[c]["gr"]] = ""
                if dico[c]["moy"]!= -1:
                    notes += dico[c]["moy"]
                    nb +=1
        for groupe in dico_groupe.keys():
            if nb != 0:
                moyenne_gr = notes / nb
                dico_groupe[groupe]=moyenne_gr
                print("La moyenne du groupe"+groupe+"est de :"+str(moyenne_gr))
            if nb == 0:
                print("la moyenne du groupe",dico_groupe[dico[c]["gr"]],"est de : -1")
    En faisant cette démarche j'obtiens la même moyenne pour tous les groupes...

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Il doit y avoir autant de listes que de groupes: à chaque fois que vous ajoutez un groupe au dictionnaire, il faut créer une liste avec pour seul élément la moyenne... et ajouter la moyenne si la clef existe déjà.

    Après, pour se balader dans des arbres, il ne faut pas hésiter à couper des branches pour se simplifier la vie car les neurones fatiguent.

    Reprenez le truc à la base:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    D = {'21390699': {'nm': 'Chollet', 'pr': 'Lucile', 'gr': 'G08A', 'moy': -1}, '21401654': {'nm': 'Douard', 'pr': 'Megane', 'gr': 'G03A', 'moy': 6.8},
     ...
    }
    D est un dictionnaire (de dictionnaires).
    Les données intéressantes sont dans les valeurs de D, les clefs, on s'en fout un peu... Et sera bien plus simple d'itérer sur la liste de ces valeurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    >>> for v in D.values():
    ...     print(v['gr'], v['moy'])
    ...
    G08A -1
    G03A 6.8
    G07B 13.07
    G03A -1
    G01A 9.9
    G08B -1
    G01A 8.79
    G03A 9.26
    >>>
    Plutôt que sur la liste des clefs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> for k in D:
    ...     print(D[k]['gr'], D[k]['moy'])
    ...
    Le résultat est le même mais en tapant sur les valeurs on évite de se trimbaler la redirection. C'est plus facile à relire et c'est plus efficace.
    Après pour faire les groupes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    >>>  G = {}
    >>> for v in D.values():
    ...     k, m = v['gr'], v['moy']
    ...     if k not in G:
    ...        G[k] = [m]
    ...     else:
    ...        G[k].append(m)
    ...
    >>> G
    {'G08A': [-1], 'G03A': [6.8, -1, 9.26], 'G07B': [13.07], 'G01A': [9.9, 8.79], 'G
    08B': [-1]}
    >>>
    Et vous voyez qu'en pratiquant directement sur l'interpréteur on va introduire des variables intermédiaires pour ne pas tout retaper, se planter, corriger, recommencer,...

    C'est moins confortable qu'un editeur de texte... mais on se laisse aller à recopier des trucs, faire run, corriger,... alors que l'important est de comprendre les instructions qu'on écrit surtout quand on débute et non de les écrire vite et courir après les erreurs.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 23
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2021
    Messages : 5
    Par défaut
    Merci beaucoup j'ai résolu mon exercice !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pb requête imbriquée
    Par ddams dans le forum Requêtes
    Réponses: 11
    Dernier message: 20/04/2004, 12h13
  2. Version étudiant et commercialisation d'applications
    Par outreal dans le forum C++Builder
    Réponses: 12
    Dernier message: 25/08/2003, 16h32
  3. Requêtes imbriquées ?
    Par Ph. B. dans le forum XMLRAD
    Réponses: 7
    Dernier message: 06/05/2003, 13h19
  4. Requête imbriquée et indexes INTERBASE
    Par vadim dans le forum InterBase
    Réponses: 2
    Dernier message: 06/09/2002, 16h15
  5. Version étudiant de Delphi 6
    Par Smortex dans le forum EDI
    Réponses: 2
    Dernier message: 20/07/2002, 11h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo