Partage
  • Partager sur Facebook
  • Partager sur Twitter

Compter occurrences mots et classement

    31 décembre 2016 à 17:57:55

    Bonjour,

    j'ai besoin de votre aide pour réaliser un programme ou du moins le compléter.

    Je souhaiterais créer une fonction qui à partir d'une liste de mots et du nombre de fois qu'ils sont répétés (occurrences), classer cette liste des mots les plus fréquents aux moins fréquents.

    Ici le code pour compter les occurrences :

    def occurrence(txt):
    
        dic={}
        List = a.split()
        ListNoDuplication = list(set(List))
        for word in ListNoDuplication :
            dic[word] = List.count(word)
        return dic
                         
         
    a=input("phrase : ")
    
    print(occurrence(a))
    

    merci à ceux qui répondront :)

    • Partager sur Facebook
    • Partager sur Twitter
    Ma vie est pleine de bugs, un simple reboot suffirait à lui rendre ses performances
      1 janvier 2017 à 9:34:56

      Bonjour et bonne année !

      Je n'ai pas trop l'habitude de travailler avec des dictionnaires, je te propose donc une solution avec des listes. Je suppose qu'il y avait un moyen plus simple de parvenir à ce résultat mais quoi qu'il en soit je te propose mon code :

      def occurrence(txt):
          nbreOccur=[]
          ordered=[]
          
          explode = txt.split(' ')
          explodeSansDoublons = list(set(explode))
           
          for mot in explodeSansDoublons:
              nbreOccur.append(explode.count(mot))
              
          nbreOccur=sorted(nbreOccur, reverse=True)
      
          for valeur in nbreOccur:
              for mot in explodeSansDoublons:
                  if explode.count(mot)==valeur and mot not in ordered:
                      ordered.append(mot)
      
          return ordered
      • Partager sur Facebook
      • Partager sur Twitter
        1 janvier 2017 à 11:04:56

        Bonjour,

        S'il ne s'agit pas d'un exercice et que tu as réellement besoin d'une telle fonction, je te conseille déjà de remplacer ta fonction occurrence par un objet Counter du module collections (collections.Counter(txt.split())).

        Ensuite, tu peux utiliser la méthode most_common de l'objet Counter pour obtenir la liste dans l'ordre souhaité.

        >>> import collections
        >>> txt = 'le petit chat est mort il est tombé du toit'
        >>> counts = collections.Counter(txt.split())
        >>> counts.most_common()
        [('est', 2), ('il', 1), ('petit', 1), ('du', 1), ('chat', 1), ('mort', 1), ('tombé', 1), ('le', 1), ('toit', 1)]
        
        • Partager sur Facebook
        • Partager sur Twitter

        Compter occurrences mots et classement

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown