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 :

Utilisation de dictionnaire


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    geek
    Inscrit en
    Mai 2017
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : geek
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 44
    Par défaut Utilisation de dictionnaire
    Bonjour
    dans un programme je récupère une valeur appelée ici val_test

    je veux vérifier si cette valeur est connue et aussi récuperer des informations sur elle
    j'ai donc testé la fonction de dictionnaire, en le remplissant manuellement
    mais je voudrais remplir ce dictionnaire a partir d'un CSV

    comment peut on écrite la/les ligne consistant à remplir mon dico ?



    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
    import csv
     
    val_test="Z102"
    dico = {'Z100':'plan1','Z101':'plan2','Z102':'plan3','Z103':'plan4'}
     
    #with open('plan.csv') as csvfile:
     #   reader = csv.DictReader(csvfile,delimiter = ';')
      #  for row in reader:
            #remplir mon dico........................
     
     
    if  (val_test in dico):
        val_test = val_test + " ===> " + dico[val_test]
    else:
        val_test = val_test +" ===> Introuvable"
     
    print (val_test)

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

    Un dictionnaire, c'est l'association de clefs avec des valeurs alors qu'un fichier CSV est une séquence de lignes composée de séquences de colonne i.e. une liste de listes ou un tableau à deux dimensions: impossible de faire correspondre les deux sauf à avoir une colonne de "clefs" (uniques) à mettre en relation avec une colonnes de valeurs...
    Ce qui dépend du contenu du fichier CSV et d'informations que vous ne donnez pas.

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

  3. #3
    Membre averti
    Homme Profil pro
    geek
    Inscrit en
    Mai 2017
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : geek
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 44
    Par défaut
    mon csv ressemble a ça :

    Z100;plan 0
    Z101;plan 1
    Z102;plan 2
    Z103;plan 3
    Z104;plan 4
    Z105;plan 5
    Z106;plan 6
    Z108;plan 8
    Z109;plan 9
    Z110;plan 10

    je veux mettre la colonne1 en clef
    et la colonne 2 en valeur

    si j'ai Z100
    je veux afficher Z100 ==> plan 0

    si j'ai Z107
    je veux afficher Z107 ==> introuvable


    c'est ce que fait mon code, mais uniquement quand je le rempli a la main
    je veux le remplir a partir du CSV

    il y a peut être mieux que les dico pour mon cas, je ne sais pas
    les dicos font 100000 lignes

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

    Citation Envoyé par daniel-12 Voir le message
    je veux mettre la colonne1 en clef
    et la colonne 2 en valeur
    Ben, je ne vois pas trop le soucis.
    Pour commencer vous pouvez simplement afficher les rows via:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for row in reader:
         print (row)
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre averti
    Homme Profil pro
    geek
    Inscrit en
    Mai 2017
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : geek
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 44
    Par défaut
    je n'y arrive pas..
    en tout cas je n'arrive pas a retrouver les valeurs

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 752
    Par défaut
    Bonsoir,

    Par rapport à la remarque de wiztricks, peut-on voir le code que vous avez testé et qui ne fonctionne pas ? Rien que le fait de voir les lignes de code que vous montre wiztricks dans le votre... afin de partir d'une base à modifier.

  7. #7
    Membre averti
    Homme Profil pro
    geek
    Inscrit en
    Mai 2017
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : geek
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 44
    Par défaut
    le code que j'ai testé est celui grisé
    j'arrive à ouvrir le csv, et lire les lignes avec un print(row) mais je n'arrive pas a lui dire l'équivalent de

    j'avais bien trouvé un truc hier, qui ne buguait pas, mais si je tentais de retrouver une des valeurs par un print (dico[val_test]), cela ne me sortait rien

    affaire a suivre

  8. #8
    Membre averti
    Homme Profil pro
    geek
    Inscrit en
    Mai 2017
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : geek
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 44
    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
    # coding: utf-8
    import csv
    dico={}
    for row in csv.reader(open('plan.csv'),delimiter=";"):
        dico[row[0]] = row[1]
     
     
    val_test="Z106"
    if (val_test in dico):
        val_test = val_test + " ===> " + dico[val_test]
    else:
        val_test = val_test + " ===> Introuvable"
     
    print(val_test)
    Z106 et Z107 sont des valeur que je veux vérifier
    le programme me renvoie :
    Z106 ===> plan 6
    Z107 ===> Introuvable

    c'est ca que je n'arrivais pas a écrire correctement, je m'obstinais à mettre de {} comme pour un remplissage manuel
    dico[row[0]] = row[1]

    ce code vous semble correctement écrit ?

  9. #9
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    C'est surtout que si vous écrivez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mon_dico = { 'a' : 1 }
    mon_dico = { 'b' : 2 }
    mon_dico = { 'c' : 3 }
    vous n'ajoutez pas de nouvelles valeur à mon_dico. A chaque fois vous récreez un dictionnaire qui est assigné à la variable mon_dico. Donc dans cet exemple, à la fin mon dico ne contient que la clé 'c'. Ce qui est complètement différent que d'écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    mon_dico = {  }  ## je créé un dico vide
    mon_dico['a'] = 1  ## je le rempli clé par clé
    mon_dico['b'] = 2
    mon_dico['c'] = 3

  10. #10
    Membre averti
    Homme Profil pro
    geek
    Inscrit en
    Mai 2017
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : geek
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 44
    Par défaut
    je ne comprends pas trop
    mon code fonctionne, celui avec

    dico[row[0]] = row[1]

  11. #11
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 870
    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 870
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par daniel-12 Voir le message
    Citation Envoyé par daniel-12 Voir le message
    je m'obstinais à mettre de {} comme pour un remplissage manuel
    je ne comprends pas trop
    C'est pourtant clair. Si tu écris
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var=truc1
    var=truc2
    var=truc3
    et si tu réfléchis attentivement à la signification de l'opérateur "égal" (opérateur d'affectation) tu devrais comprendre que les deux premières lignes ne servent à rien et que "var" contient au final "truc3".

    Si maintenant tu adaptes ensuite à ce que tu tentais de faire quand tu dis que tu écrivais "{}" comme pour un remplissage manuel et que lg_53 traduit par
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mon_dico = { 'a' : 1 }
    mon_dico = { 'b' : 2 }
    mon_dico = { 'c' : 3 }
    tu comprendras immédiatement que "mon_dico" ne contient que la dernière ligne.

    Citation Envoyé par daniel-12 Voir le message
    mon code fonctionne, celui avec

    dico[row[0]] = row[1]
    Oui. Car là tu remplis un élément du dictionnaire. Tu ne recrées pas un dictionnaire différent.
    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]

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

    Citation Envoyé par daniel-12 Voir le message
    ce code vous semble correctement écrit ?
    Si çà fonctionne, c'est assez correct.
    Après on peut (toujours) coder "mieux":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import csv
     
    reader = csv.reader(open('plan.csv'), delimiter=";")
    dico = dict(reader)
     
    val_test="Z106"
    print (val_test, dico.get(val_test, " ===> Introuvable"))
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Utiliser le dictionnaire personnel uniquement
    Par Burt67 dans le forum Word
    Réponses: 1
    Dernier message: 26/05/2010, 19h28
  2. Réponses: 0
    Dernier message: 06/02/2010, 21h29
  3. Utilisation du Dictionnaire Word
    Par Zaki_SDwin dans le forum Débuter
    Réponses: 2
    Dernier message: 09/03/2008, 22h01
  4. [Access2003][VBA]Utilisation des Dictionnaires
    Par hoaxpunk dans le forum VBA Access
    Réponses: 2
    Dernier message: 15/05/2007, 22h21

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