Dictionnaire d'objet

Bonjour,

J'essaye de faire un dictionnaire python qui va contenir un objet (avec plusieurs attribut). le but étant a partir d'une seule clé avoir 3 valeurs.
Mon problème est que je n'arrive pas à afficher les attributs de l'objet hors de ma boucle de traitement.
Mon but est de pouvoir afficher le dictionnaire avec les valeurs comme tel : cle = "mot1" et occurrence = 1 et appartenance au dictionnaire = True.

merci beaucoup pour votre aide

voici mon code

class WordProperty:

    def __init__(self, occurence, appartenanceDico):
        self.occurence=occurence
        self.appartenanceDico=appartenanceDico

class LexicalAnalysis ():
    def __init__(self, ):
        #self.ObjetWordProperty=WordProperty(self.Ocurence, self.AppartenanceDico, self.nomPropre)
        self.mapDifferentWord={}
    def TraitementTexte(self,chaineDeMots,DictionnaireDeMot):
        Ocurence = 1
        AppartenanceDico = True
        nomPropre = True
        listeChaine = chaineDeMots.split()
        DictionnaireDeMot = DictionnaireDeMot

        for mot in listeChaine:
            if mot not in self.mapDifferentWord:
                Ocurence=listeChaine.count(mot)
                if mot  in DictionnaireDeMot:
                    AppartenanceDico= True
                else:
                    AppartenanceDico = False
                ObjetWordProperty = WordProperty(Ocurence, AppartenanceDico)
                self.mapDifferentWord[mot] = {ObjetWordProperty}
    def diplayMapDifferentWord(self):
        #DicoCle=self.mapDifferentWord.keys()
        for cle in self.mapDifferentWord :

            print("cle = ",cle)
            print("occurence=", self.mapDifferentWord.get(cle)) 
            #print("{} : Occurence = {}  ".format(cle, self.ObjetWordProperty.occurence))
if __name__ == "__main__":
    chaine = "salut ça va ? Oui ça va"
    dictionnaireDeMot=["salut"]
    objetAnalyseTexte = LexicalAnalysis()
    objetAnalyseTexte.TraitementTexte(chaine, dictionnaireDeMot)
    objetAnalyseTexte.diplayMapDifferentWord()

Configuration: Windows / Chrome 85.0.4183.83

3 réponses

  1. Contributeur
    bonjour, as-tu envisagé de définir une classe pour ces objets?
    1. Bonjour , oui j'ai fait une classe avec deux attributs. Ci-dessus mon code en entier
      1. Contributeur
        ne devrais-tu pas alors utiliser ces attributs?
      2. Contributeur
        @yg_beexemple:
            def diplayMapDifferentWord(self):
                for cle in self.mapDifferentWord :
                    for wp in self.mapDifferentWord.get(cle):
                        print("{} : Occurence = {}  ".format(cle, wp.occurence))
        
      3. Contributeur
        @yg_beje pense que ton soucis vient des accolades en ligne 26, que tu utilises peut-être sans en comprendre l'effet.
      4. @yg_beMerci pour ton aide sa marche effectivement très bien.
      5. Contributeur
        @bongningapeux-tu alors marquer la discussion comme résolue?
    2. Bonjour Bongniga,

      Juste pour info (je ne sais pas si c'est pertinent dans ton cas, mais c'est pour la précision du vocabulaire):

      Tu définis une variable dictionnaireDeMot=["salut"]

      Mais, pour être précis, en Python, ce que l'on appelle un dictionnaire, c'est un couple clé+valeur:

      dico = {'nom': 'Menvussa', 'Prenom':'Gérard'}


      Ton dictionnaire de mots, en fait, c'est une liste ...
      1. Bonjour Phil_1857
        Oui je vois que sa peut prêter a confusion , c'est en faite une liste de mots (que je compte récupéré d'un fichier texte pour le traitement)
        Merci