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 :

Rechercher des valeurs dans un dictionnaire et les ajouter à une liste


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Septembre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Septembre 2014
    Messages : 10
    Par défaut Rechercher des valeurs dans un dictionnaire et les ajouter à une liste
    bonjour,
    je cherche a afficher pour chaque bp une liste de cass associées par exemple pour BP01: CS0621,CS0622,CS0627

    table bp.csv
    bp_code
    BP01
    BP02
    BP08
    BP09

    table cass

    cs_code,cs_nb_pas,cs_bp_code
    CS0621,1,BP01
    CS0622,1,BP01
    CS0623,1,BP02
    CS0625,1,BP08
    CS0627,1,BP01
    CS0629,1,BP08
    CS0631,1,BP08

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Ce ne serait pas plutôt cass.append(row["cs_code"]) ?

    Je suppose que avec les print tu as obtenu les résultats attendus.

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Tu mélanges les clés des deux fichiers, c'est pour cela que tu as cette KeyError.

    Je pense que c'est ceci que tu veux faire:
    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
     
    # -*- coding: utf-8 -*-
     
    import csv
     
    with open('t_bp.csv') as bp:
        reader = csv.DictReader(bp)
        # On crée une liste des données
        data = [row['bp_code'] for row in reader]
     
    with open('t_cass.csv') as cass:
        reader = csv.DictReader(cass)
        refs = []
        for row in reader:
            # Note l'espace avant cs
            if row[' cs_bp_code'] in data:
                refs.append(row['cs_code'])
     
    print(data)
    print(refs)

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Et bien, c'est ce que fait print(refs) non ?

  5. #5
    Membre habitué
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Septembre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Septembre 2014
    Messages : 10
    Par défaut
    en fait non , je veux pas afficher toutes les cs_code
    je veux juste les cs_code dont leurs cs_bp_code=bp_code

  6. #6
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Avec mon code j'obtiens ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ['BP062100401123', 'BP062100401124', 'BP062100401130', 'BP062100401131', 'BP062100401132']
    ['CS062100554554']
    la deuxième liste contient bien le cs_code de 'BP062100401123'

  7. #7
    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 zohit Voir le message
    je cherche a afficher pour chaque bp une liste de cass associées par exemple pour BP01: CS0621,CS0622,CS0627
    En Python "associer" passe souvent par un dictionnaire. La clef pourrait être "BP01" et la liste [ "CS0621", "CS0622", "CS0627" ] se construit à la lecture de chaque ligne.

    Il y a bien sûr d'autres façons de procéder mais il n'y a rien qui essaie quoi que ce soit pour ce faire dans votre code: çà ne va pas marcher tout seul! Et on ne va pas faire vos exercices à votre place.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/04/2010, 12h39
  2. Réponses: 4
    Dernier message: 18/12/2009, 13h44
  3. [XL-2003] rechercher des valeurs dans des onglets suivant liste
    Par spico45 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/11/2009, 16h44
  4. Réponses: 0
    Dernier message: 04/11/2008, 21h46
  5. Passer des valeurs dans mon actionform sans les afficher
    Par tonito53 dans le forum Struts 1
    Réponses: 6
    Dernier message: 04/01/2007, 11h36

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