2017-09-26 11 views
0

Ok est une liste alors voici:Comment compter le nombre de fois qu'un caractère spécifique apparaît dans une liste?

sentList = ['I am a dog', 'I am a cat', 'I am a house full of cards'] 

Je veux être en mesure de compter le nombre total de fois une lettre entrée utilisateur apparaît à travers toute la liste.

userLetter = input('Enter a letter: ') 

Disons que la lettre est « a »

Je veux que le programme de passer par et compter le nombre de fois « a » apparaît dans la liste. Dans ce cas, le nombre total de 'a' dans la liste devrait être 8.

J'ai essayé d'utiliser la fonction de compte par une boucle for mais je continue à obtenir des nombres que je ne sais pas expliquer, et sans vraiment savoir comment formater la boucle, ou si j'en ai besoin du tout.

J'ai essayé, mais cela ne fonctionne pas.

count = sentList.count(userLetter) 

Toute aide serait appréciée, je n'ai trouvé aucune documentation pour compter toutes les occurrences d'une lettre dans une liste.

+0

double possible de [Count occurrence d'un caractère dans une chaîne] (https://stackoverflow.com/questions/1155617/count-occurrence-of-a-character-in-a-string) –

Répondre

0

Avez-vous essayé quelque chose comme ça?

userLetter = input('Enter a letter: ') 
sentList = ['I am a dog', 'I am a cat', 'I am a house full of cards'] 

letterCount = 0 
for sentence in sentList: 
    letterCount += sentence.count(userLetter) 

print("Letter appears {} times".format(letterCount)) 
+0

Le clé pour comprendre ceci est que "pour phrase dans sentList" vous donne un objet appelé phrase que vous pouvez utiliser dans votre boucle for. Cet objet est égal à la valeur de chaque élément de la liste, qui dans ce cas est une chaîne. Nous pouvons faire string.count (lettre) pour obtenir le nombre de fois que cette lettre apparaît dans cette chaîne. En ajoutant cette valeur à letterCount, et en répétant chaque phrase, nous avons notre réponse! –

+0

Explication géniale! Je vous remercie! –

+0

Vous êtes les bienvenus! –

2

Fusionne toutes les chaînes en une seule chaîne, puis utilise la fonction count.

count = ''.join(sentList).count(userLetter) 
0

Votre approche est à moitié correcte. Le problème est que vous devez passer par le list.

word_count=0 
for l in sentList: 
    word_count+= l.count(userLetter) 
2

Utilisez le sum() builtin d'additionner les chefs d'accusation pour chaque chaîne dans la liste:

total = sum(s.count(userLetter) for s in sentList)