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 :

Sélectionner plusieurs valeurs pour une clé


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Profil pro
    Gestionnaire de données
    Inscrit en
    Mai 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Gestionnaire de données

    Informations forums :
    Inscription : Mai 2011
    Messages : 44
    Points : 31
    Points
    31
    Par défaut Sélectionner plusieurs valeurs pour une clé
    Voilà, j'ai un petit soucis avec mon script. Le but de l'exercice est qu'à partir d'un texte (texte.txt), et d'un dictionnaire créer à partir de ce texte (dico.txt), je puisse établir des statistiques sur les voisinages entre catégories syntaxiques.

    Dans le fichier texte.txt, à une ligne correspond une phrase.

    Dans le fichier dico.txt, on trouve sur chaque ligne une forme lexicale, suivie d'une ou plusieurs catégories syntaxiques. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    chat nom
    ferme verbe nom adjectif
    le article pronom
    mange verbe
    sur prép
    vivre infinitif
    ...
    Avant de pouvoir effectuer des statistiques sur le voisinage entre catégories, j'ai compris qu'il me fallait créer un dictionnaire et une liste.
    Voici mon script :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    import string
     
    def constrDic(texte):
            f=open(texte, "r")
            d=f.readlines()
            f.close()
     
            dico={}
            for ligne in d:
                    s=string.split(ligne)
                    if dico.has_key(s[0]):
                            dico[s[0]]=dico[s[0]]+[s[1]]
                    else:
                            dico[s[0]]=[s[1]]
     
            return dico
     
    di=constrDic("dico.txt") 
    print di
     
    def constrListe(texte):
            f=open(texte, "r")
            l=f.readlines()
            f.close()
     
            for ligne in l:
                    liste=string.split("l")
     
            return l
     
    doc=constrListe("texte.txt")
    print doc
    A priori, lorsque je lance mon script, tout se passe bien, sauf que pour les formes lexicales qui ont plusieurs catégories syntaxiques, une seule est sélectionnée. Je pense que mon problème se situe au niveau de la ligne dico
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [s[0]]=dico[s[0]]+[s[1]]
    mais je n'en suis pas sûre.

    Est-ce que quelqu'un aurait la gentillesse de m'aider ?

    Merci

  2. #2
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Bonsoir.

    J'aimerais bien t'aider mais tel que tu as posé ta question, il y a trop de choses à décrypter.

    Il faudrait mettre un exemple autonome, et avec en plus ce que tu obtiens et ce que tu voudrais avoir.

    Une fois ceci fait, la réponse viendra rapidement à coup sûr...

  3. #3
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Effectivement le problème vient de la ou tu penses. Il faur récupérer toutes les catégories (de l'indice 1 à la fin de la ligne)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    def constrDic(texte):
            #...
            dico={}
            for ligne in d:
                    s=string.split(ligne)
                    if dico.has_key(s[0]):
                            dico[s[0]]=dico[s[0]]+s[1:]
                    else:
                            dico[s[0]]= s[1:]                        
            return dico
    Ce qui serait encore mieux: utiliser des set() plutot que des listes, pour vérifier les doublons; et remplacer le if dico.has_key(s[0]) par un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    assert s[0] not in dico, "Le dictionnaire contient 2 fois le meme mot!!!"
    Ensuite pour tester les catégories communes à deux mots, tu peux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dico["mot1"].intersect(dico["mot2"])

  4. #4
    Nouveau membre du Club
    Profil pro
    Gestionnaire de données
    Inscrit en
    Mai 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Gestionnaire de données

    Informations forums :
    Inscription : Mai 2011
    Messages : 44
    Points : 31
    Points
    31
    Par défaut
    Merci beaucoup. Ca marche super !!

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

Discussions similaires

  1. plusieurs valeurs pour une même énumération
    Par adaneels dans le forum C#
    Réponses: 6
    Dernier message: 10/04/2009, 17h41
  2. [MySQL] Plusieurs valeurs pour une variable à injecter
    Par pony99 dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 03/12/2008, 12h04
  3. Plusieurs valeurs pour une meme colonne
    Par Aragorn) dans le forum SQL
    Réponses: 4
    Dernier message: 03/01/2008, 14h46
  4. Plusieurs valeurs pour une même colonne
    Par maxlegrand dans le forum Langage SQL
    Réponses: 7
    Dernier message: 16/10/2007, 13h32
  5. [Tableaux] Plusieurs valeurs pour une seule CheckBox
    Par Phenol dans le forum Langage
    Réponses: 2
    Dernier message: 01/03/2007, 17h54

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