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 :

Fusion et addition de liste de dictionnaire


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2020
    Messages : 4
    Par défaut Fusion et addition de liste de dictionnaire
    Bonjour,

    je suis débutant en python et je travaille sur des listes de dictionnaires ( se présentant sous cette forme : [{'sexe': '1', 'prenom': 'AADIL', 'annee': '2003', 'nombre': '3'}, {'sexe': '1', 'prenom': 'AARON', 'annee': '2003', 'nombre': '136'}, {'sexe': '1', 'prenom': 'AARONE', 'annee': '2003', 'nombre': '4'}] etc). Je souhaite réunir les données des deux listes de dictionnaires en créant une table des prénoms des enfants nés en 2003 ou 2004. Le tout en faisant la somme des nombres pour chaque prénom. Et donc créer une table de jointure avec la somme des nombres. J'imagine que je dois fusionner les deux listes en comparant les prénoms et quand tu retrouve un même prénom les additionner mais je ne sais pas comment m'y prendre.
    Mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    import csv
    fichier=open("p1.csv", encoding='utf8')
    Table_Prenoms2003=list(csv.DictReader(fichier)) #conversion en liste de dictionnaires
    fichier.close()
     
    fichier=open("p2.csv",encoding='utf8')
    Table_Prenoms2004=list(csv.DictReader(fichier,delimiter=",")) #conversion en liste de dictionnaires
    fichier.close()
    Merci d'avance de votre réponse.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 707
    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 707
    Par défaut
    Salut,

    Prenez 2 tableaux plus simples:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> L1 = [('A', 1), ('B', 2), ('C', 3) ]
    >>> L2 = [('A', 3), ('B', 5) ]
    ici ce sont des listes de tuples. L'important est le nombre de dimensions.

    Si je veux "fusionner" L1 et L2, la façon naïve sera de faire une boucle sur les éléments de L2 pour trouver l’élément de L1 correspondant via une autre boucle.
    Si vous connaissez les dictionnaires, il sera plus simple de fabriquer un dictionnaire D1 à partir de L1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> D1 = dict(L1)
    >>> D1
    {'A': 1, 'B': 2, 'C': 3}
    puis pareil, on boucle sur les éléments de L2 pour trouver (avec la clef) l'élément de D1 auquel y ajouter la valeur correspondante (et s'il n'y en a pas on crée une nouvelle entrée).

    Si vous avez compris le principe, vous devriez arriver à finir de le coder.
    Une fois que vous avez compris, vous essayez d'appliquer à votre exercice. Ce qui vous permettra d'écrire un premier code (et d'avoir quelque chose à poster si çà ne va pas).

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

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2020
    Messages : 4
    Par défaut
    J'ai peur de ne pas bien suivre. Que voulez-vous dire par "on boucle sur les éléments de L1 pour trouver (avec la clef) l'élément de D1" ?
    Merci d'avance pour votre éventuelle réponse.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 707
    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 707
    Par défaut
    Citation Envoyé par Julio_Julio Voir le message
    Que voulez-vous dire par "on boucle sur les éléments de L1 pour trouver (avec la clef) l'élément de D1" ?
    En effet, j'aurais du écrire L2. C'est corrigé.

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

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2020
    Messages : 4
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    En effet, j'aurais du écrire L2. C'est corrigé.

    - W
    Je ne comprends pas le principe que vous essayez de m'expliquer. Je pense que c'est parce que je suis encore débutant mais je ne vois pas comment avec une boucle je peux trouver dans D1, l'élément auquel je souhaite ajouter une valeur.
    Merci encore.

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 823
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Julio_Julio Voir le message
    Je ne comprends pas le principe que vous essayez de m'expliquer. Je pense que c'est parce que je suis encore débutant mais je ne vois pas comment avec une boucle je peux trouver dans D1, l'élément auquel je souhaite ajouter une valeur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Pour chaque élément X de L2, faire
        si X est déjà dans L1, alors ajouer valeur de X à la valeur de L1 qui a déjà ce X
        sinon ajouter X et sa valeur dans L1
    fin pour
    Bon le souci chez-toi c'est que tu as 500 clefs différentes. Donc pour fusionner, il faut d'abord définir le critère de fusion et sa clef...
    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]

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2020
    Messages : 4
    Par défaut
    Bonjour, merci de votre réponse, qu'est-ce que le "critère de fusion" ? Dans mon programme les 4 noms de clés sont "sexe", "prenom", "annee", "nombre" et cela pour les 2 listes de dictionnaires. Est-ce que le fait que ce sont les mêmes noms de clés pour les deux listes de dictionnaires peuvent me faciliter/m'aider à fusionner ou cela n'a rien avoir

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 707
    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 707
    Par défaut
    Salut,

    Citation Envoyé par Julio_Julio Voir le message
    Je pense que c'est parce que je suis encore débutant mais je ne vois pas comment avec une boucle je peux trouver dans D1
    Si vous n'avez pas déjà fait ce genre d'exercice, normal que vous ne sachiez pas par où commencer, ni que faire.

    Normalement, pour apprendre, vous avez ouvert un tuto. dans lequel il doit y avoir un chapitre qui parle des dictionnaires, d'autres des listes et des boucles,... il serait peut être intéressant d'aller y jeter un œil pour revoir tout çà.

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

  9. #9
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 823
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Julio_Julio Voir le message
    qu'est-ce que le "critère de fusion" ?
    C'est-quoi-qui-fait-que-deux-donnees-sont-egales ???
    Entre ("Année" : 2004, "Prenom" : "Aldo", "Sexe" : 1, "nombre" : 18) et ("Année" : 2007, "Prenom" : "Aldi", "Sexe" : 1, "nombre" : 18) quel critère te permet de dire "oui c'est la même chose" ou "non ce n'est pas la même chose" ? C'est toi qui veut fusionner. Tu devrais donc être capable d'avoir dans ta tête le "c'est quoi qui fait que je peux fusionner" à défaut de pouvoir le dire à Python !!!

    Citation Envoyé par Julio_Julio Voir le message
    Dans mon programme les 4 noms de clés sont "sexe", "prenom", "annee", "nombre" et cela pour les 2 listes de dictionnaires. Est-ce que le fait que ce sont les mêmes noms de clés pour les deux listes de dictionnaires peuvent me faciliter/m'aider à fusionner ou cela n'a rien avoir
    Ben voilà. Tu as 4 clefs. Laquelle va te servir de référence pour pouvoir dire "ok cette donnée je l'ai déjà donc j'additionne les deux exemplaires" ???
    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]

Discussions similaires

  1. opérations sur listes et dictionnaires
    Par rom44 dans le forum Général Python
    Réponses: 20
    Dernier message: 14/10/2010, 00h49
  2. Syntaxe élégante pour une fusion de compréhension de liste
    Par sopsag dans le forum Général Python
    Réponses: 8
    Dernier message: 23/08/2010, 12h22
  3. Mise a jour liste de dictionnaire
    Par Invité(e) dans le forum Général Python
    Réponses: 6
    Dernier message: 19/10/2009, 16h07
  4. Dictionnaire de liste -> liste de dictionnaire
    Par ju_bicycle dans le forum Général Python
    Réponses: 8
    Dernier message: 01/07/2009, 12h43
  5. Listes et dictionnaire
    Par Victoria007 dans le forum Général Python
    Réponses: 3
    Dernier message: 19/05/2008, 22h38

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