Cet article présente principalement l'idée détaillée du comptage des mots en Python. L'article vous propose également une solution sans utiliser de modules tiers. Les amis intéressés devraient y jeter un œil
Description du problème :
Utilisez Python pour implémenter la fonction count_words(). Cette fonction saisit une chaîne s et un nombre n, et renvoie les n mots les plus fréquents dans s. . La valeur de retour est une liste de tuples, comprenant les n mots avec les occurrences les plus élevées et leurs heures, c'est-à-dire [(print count_words("betty bought a bit of butter but the butter was bitter",3)
[('beurre', 2), ( 'a', 1), ('betty', 1)]
Idées pour résoudre le problème :
1 . La chaîne s est divisée par des espaces pour obtenir toutes les listes de mots split_s, telles que : ['betty', 'buyed', 'a', 'bit', 'of', 'butter', 'but', 'the. ', 'butter', 'was', 'bitter']2. Créez une maplist et convertissez les split_s en une liste de tuples, tels que : [('betty', 1), ('buyed' , 1), ('un', 1), ('un peu', 1), ('de', 1), ('beurre', 1), ('mais', 1), ('le', 1 ) , ('butter', 1), ('was', 1), ('bitter', 1)]3. Fusionner les éléments de la maplist Si la première valeur d'index du tuple est. la même chose, puis sa deuxième valeur d'indice est ajoutée. // Remarque : Préparez-vous à utiliser defaultdict. Les données obtenues sont les suivantes : {'betty' : 1, 'acheté' : 1, 'a' : 1, 'bit' : 1, 'of' : 1, 'butter' : 2, 'but' : 1, 'the' : 1, 'was' : 1, 'amer' : 1}4. Triez par ordre alphabétique par clé et obtenez ce qui suit : [('a', 1), ('betty', 1. ), ('bit', 1), ('amer', 1), ('acheté', 1), ('mais', 1), ('beurre', 2), ('de', 1) , ('le', 1), ('était', 1)]5. Effectuez un tri secondaire, triez par valeur et obtenez ce qui suit : [('beurre', 2), ('a ' , 1), ('betty', 1), ('bit', 1), ('amer', 1), ('acheté', 1), ('mais', 1), ('de', 1 ), ('the', 1), ('was', 1)]6. Utilisez le découpage pour extraire des *groupes de données avec une fréquence plus élevéeRésumé : Non disponible sur python3 The les résultats du tri de defaultdict sont également corrects, mais pas corrects sur python2. defaultdict lui-même n'a pas d'ordre pour distinguer la liste, elle doit être triée. Vous pouvez également essayer de l'écrire vous-même sans utiliser de modules tiers Solution 1 (utiliser defaultdict) :from collections import defaultdict """Count words.""" def count_words(s, n): """Return the n most frequently occuring words in s.""" split_s = s.split() map_list = [(k,1) for k in split_s] output = defaultdict(int) for d in map_list: output[d[0]] += d[1] output1 = dict(output) top_n = sorted(output1.items(), key=lambda pair:pair[0], reverse=False) top_n = sorted(top_n, key=lambda pair:pair[1], reverse=True) return top_n[:n] def test_run(): """Test count_words() with some inputs.""" print(count_words("cat bat mat cat bat cat", 3)) print(count_words("betty bought a bit of butter but the butter was bitter", 4)) if __name__ == '__main__': test_run()
from collections import Counter """Count words.""" def count_words(s, n): """Return the n most frequently occuring words in s.""" split_s = s.split() split_s = Counter(name for name in split_s) print(split_s) top_n = sorted(split_s.items(), key=lambda pair:pair[0], reverse=False) print(top_n) top_n = sorted(top_n, key=lambda pair:pair[1], reverse=True) print(top_n) return top_n[:n] def test_run(): """Test count_words() with some inputs.""" print(count_words("cat bat mat cat bat cat", 3)) print(count_words("betty bought a bit of butter but the butter was bitter", 4)) if __name__ == '__main__': test_run()
Implémentation de Python pour calculer pi Exemple de méthode pour transférer la valeur vers n'importe quel bit
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!