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 :

probleme concordance dictionnaire et liste


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 133
    Par défaut probleme concordance dictionnaire et liste
    Bonjour,
    voila j'ai un petit souci que voici:

    j'ai deux dictionnaire:l'un pour les CV-**** et l'autre pour les Aster-*****

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {"['C169v2-00003']": '[1, 45]', "['C169v2-04487']": '[66, 111, 155, 184, 207, 253]', "['C169v2-00001']": '[24, 54, 92, 137, 236, 276, 325]', "['C169v2-00005']": '[58, 138, 191, 222]', "['C169v2-00002']": '[44, 50, 134]', "['C169v2-00004']": '[15, 46, 102, 165]'}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {"['Aster-04749']": '[83, 150, 214]', "['Aster-00003']": '[31, 116, 144, 172, 242]', "['Aster-06787']": '[79, 117, 196, 223, 264, 307, 338, 348, 387, 418, 454, 501, 566]', "['Aster-00004']": '[17, 79, 185, 226, 238, 259, 287, 338]', "['Aster-00001']": '[42, 66, 138, 147]', "['Aster-00002']": '[70, 127, 144, 199]'}
    Et j'ai un fichier contenant le couple CV-*** Aster-****
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    C169v2-00001	Aster-00001	
    C169v2-00002	Aster-00002	 
    C169v2-00003	Aster-00003	 
    C169v2-00004	Aster-00004	 
    C169v2-00005	Aster-04749	 
    C169v2-04487	Aster-06787
    je voudrais a partir de ce fcihier lire les couples les stockees, et aller dans les dictionnaires respectifs recuperer les valeurs et les ecrire pour les Aster et CV respectifs.
    Mais j'ai un souci de Key error
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    KeyError: 'C169v2-00001'
    voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    with open('ok.txt') as fichier:
    	for line in fichier:
     
         	 	tab = line.split("\t")
         		print tab[0]  # => C169v2-00002
          		print tab[1]  # => Aster-06787
    		print d1[tab[0]] # ce qui equivaut a print dic["C169v2-00001"] ==> 24, 54, 92, 137, 236, 276, 325]'
    		print d2[tab[1]] # ce qui equivaut a print dic["Aster-00001] ==> [42, 66, 138, 147]
    est ce que quelqu'un pourrait m'eclairer mon erreur et m'aider please!!!!!

    merci

  2. #2
    Membre très actif
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Par défaut
    Bonjour,
    Les clefs de votre dictionnaire sont sous la forme
    "['C169v2-00003']"
    Tandis que dans votre fichier de lecture ce n est pas le cas vous devriez essayer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    with open('ok.txt') as fichier:
    	for line in fichier:
     
         	 	tab = line.split("\t")
         		print tab[0]  # => C169v2-00002
          		print tab[1]  # => Aster-06787
    		print d1["["+tab[0]+"]"] # ce qui equivaut a print dic["[C169v2-00001]"] ==> 24, 54, 92, 137, 236, 276, 325]' comme dans l exemple
    		print d2["["+tab[1]+"]"] # ce qui equivaut a print dic["[Aster-00001]"] ==> [42, 66, 138, 147] comme dans l exemple
    A plus.
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 133
    Par défaut
    J'ai utilise ce que vous avez dit car j'ai pense au meme souci mais j'ai toujours la meme erreur, je pense plutot qu'il faut que je fasse une boucle dans le dictinnaire ou pas??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Traceback (most recent call last):
      File "essai2.py", line 115, in <module>
        print d1["["+tab[0]+"]"] 
    KeyError: '[C169v2-00001]'

  4. #4
    Membre très actif
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Par défaut
    Re,
    Excuse moi. Petite erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    with open('ok.txt') as fichier:
    	for line in fichier:
     
         	 	tab = line.split("\t")
         		print tab[0]  # => C169v2-00002
          		print tab[1]  # => Aster-06787
    		print d1["['"+tab[0]+"']"] # ce qui equivaut a print dic["['C169v2-00001']"] ==> 24, 54, 92, 137, 236, 276, 325]' comme dans l exemple
    		print d2["['"+tab[1]+"']"] # ce qui equivaut a print dic["'[Aster-00001']"] ==> [42, 66, 138, 147] comme dans l exemple
    Je crois que ca y est. J ' ai tout a l heure oublie les apostrophes.
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 133
    Par défaut
    Ok merci bcp!!!!! ca marche i'm happy

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 133
    Par défaut
    J'ai le meme souci mais cette fois jai un tres grand fichier qu'on va resumer a ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    C169v2-03060	Aster-04730	
    C169v2-03067	Aster-04746	
    C169v2-03066	Aster-04710	
    C169v2-03065	Aster-04711	
    C169v2-03064	Aster-05029
    apres les ASTER il y a un \n qui me pause probleme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    with open('ok.txt') as fichier:
    	for line in fichier:
     
         	 	tab = line.split("\t")
    		print tab
         		print tab[0]  # => C169v2-00002
          		print tab[1]  # => Aster-06787
    	        print d1["['"+tab[0]+"']"] # ce qui equivaut a print dic["['C169v2-00001']"] ==> 24, 54, 92, 137, 236, 276, 325]' comme dans l exemple
    		print d2["['"+tab[1]+"']"]
    car du coup j'ai une erreure du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    KeyError: "['Aster-06787\n']"
    j'ai essaye de joue comme vous avec les expressions mais je n'y arrive pas

    merci si vous avez une solution

Discussions similaires

  1. Problème "for" dans dictionnaire de liste
    Par Sayrus dans le forum Général Python
    Réponses: 3
    Dernier message: 15/02/2006, 16h35
  2. [FreePascal] Problème pour une simple liste chaînée
    Par piff62 dans le forum Free Pascal
    Réponses: 3
    Dernier message: 26/11/2005, 19h25
  3. Réponses: 5
    Dernier message: 25/10/2005, 20h51
  4. Probleme avec les double Liste chainees
    Par BernardT dans le forum Langage
    Réponses: 1
    Dernier message: 12/07/2005, 17h22
  5. Probleme avec les cmd LIST ou NLST
    Par enox dans le forum Développement
    Réponses: 4
    Dernier message: 16/05/2005, 01h47

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