J'ai besoin de savoir comment je peux calculer le nombre de mots dans la liste qui commencent par la lettre A, B, C. Z.
Ici, je laisse la partie de lecture du fichier TXT P> < Pré> xxx pré>
Je dois calculer le nombre de mots qui commencent par [a ... z]. Pour des exemples. P>
Ici, je laisse la solution au problème. Remerciant ceux qui m'ont aidé !! p>
3 Réponses :
suppose que, il y a un nom de liste et ont un tableau qui ont 26 éléments. P> Liste code> qui ont 3 éléments:
array = ["0", "0", ......"0", "0"......"0","0"]
Vous devriez toujours nommer vos variables Python avec toutes les lettres minuscules, elles ne sont donc pas confondues avec des classes, par exemple.
Bonjour, cela me montre la sortie suivante: [((A ', 0), (' B ', 0), (' c ', 0), (' d ', 0), (' E ', 0), ('f', 0), ('g', 0), ('h', 0), ('i', 0), ('J', 0), ('k', 0), (' l ', 0), (' m ', 0), (' n ', 0), (' o ', 0), (' P ', 0), (' Q ', 0), (' R ' , 0), ('s', 0), ('t', 0), ('u', 0), ('v', 0), ('y', 0), ('x', 0) ), ('y', 0), ('z', 1)] Les valeurs n'augmentent pas
La question est pourquoi? pour z >> ('z', 1).
@Shuvokarmakar Il me montre que tuple ('Z', 1) parce que ma solution ne fonctionnait pas très bien. Mais j'ai déjà réussi à résoudre le problème en utilisant les éléments suivants: k = {lettre: 0 pour la lettre de la liste (string.ascii_lowercase)}
Donc, selon votre réponse mise à jour (1 mot par ligne, déjà trié par ordre alphabétique), quelque chose comme ça devrait fonctionner: update: strong> p > Il est bon que vous ne vouliez pas simplement une solution réaymade, mais votre code a quelques problèmes et certains points ne sont pas super pythoniques, c'est pourquoi j'ai suggéré de le faire comme ci-dessus. Si vous voulez vraiment aller avec votre solution, vous devez corriger votre fonction compteur de contrebaltter code>. Le problème avec c'est que vous ne stockez pas réellement les résultats nulle part, vous retournez toujours une nouvelle gamme de résultats pour chaque mot. Vous avez probablement un mot commençant par "Z" comme dernier mot du fichier, d'où le résultat ayant
0 code> comme comptage pour toutes les lettres, sauf "Z ', qui en a un. Vous devez mettre à jour vos valeurs pour la lettre actuelle dans cette fonction, au lieu de calculer l'ensemble de la matrice à la fois. P> P>
Votre solution fonctionne bien! Mais j'aimerais voir si je peux le faire avec ma solution. Pour l'instant avec ma solution me renvoie [(A ', 0), (' B ', 0), (' C ', 0), (' d ', 0), (' E ', 0), (' f ', 0), (' g ', 0), (' h ', 0), (' i ', 0), (' J ', 0), (' k ', 0), (' l ' , 0), ('m', 0), ('n', 0), ('o', 0), ('p', 0), ('Q', 0), ('R', 0), ), ('s', 0), ('t', 0), ('u', 0), ('v', 0), ('y', 0), ('x', 0), ('y', 0), ('z', 1)]
@Chrisperez J'ai mis à jour ma réponse pour parler un peu de moyens de corriger votre code, puis :)
@Chrisperez a fait des réponses ici vous aidez à atteindre votre solution? Si oui, veuillez en marquer l'un d'entre eux comme la bonne réponse. Sinon, s'il vous plaît laissez-nous savoir ce qui manque :)
Je suggérerai de changer un peu votre code comme celui-ci.
Utilisez Collection.defaultDic strong> t définit sur définir changer < code> pour i in lignes: code> corps à p> si vous imprimez Les clés de la dicte sont sensibles à la casse, afin de transformer le boîtier, si nécessaire. P> Vous n'avez pas besoin d'une méthode externe pour faire le travail de comptage. P> p> xs code> comme
xs = defaultdict (int) code> p>
xs code> à la fin du
pour Code> boucle Vous obtiendrez quelque chose comme: p>
Merci mec!! Explication très facile
Il semble que votre
principal code> devrait être une fonction, pas une classe.
UPSS Oui, désolé
Comment sont vos données de fichier? Qu'avez-vous essayé jusqu'à présent, autrement que de lire le contenu du fichier?
Pour l'instant, j'essaye avec XS = liste (filtre (Lambda x: x [0] == 'A', lignes)) Pour voir si plus tard, je peux créer un tuple afin que j'ai quelque chose comme ça ('a', 4), ('B', 1)
Quant à txt, chaque ligne n'a qu'un mot. Oui, il est déjà commandé par l'alphabet.