Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialSrikanth Srinivas
1,465 PointsWhy won't this script return all the words in the list?
I just get two values in my dictionary if i enter more than 3 words in the any string argument
# E.g. word_count("I am that I am") gets back a dictionary like:
# {'i': 2, 'am': 2, 'that': 1}
# Lowercase the string to make it easier.
# Using .split() on the sentence will give you a list of words.
# In a for loop of that list, you'll have a word that you can
# check for inclusion in the dict (with "if word in dict"-style syntax).
# Or add it to the dict with something like word_dict[word] = 1.
def word_count(anystring):
my_dict = {}
my_list = anystring.split()
for word in my_list:
my_dict[my_list.count(word)] = word
return my_dict
1 Answer
Martin Cornejo Saavedra
18,132 PointsYou have one definition backwards. The keyword is the word and the value is the count. I added an if to skip repeated words, this way the code is more efficient.
def word_count(anystring):
my_dict = {}
my_list = anystring.split()
for word in my_list:
if word not in my_dict:
my_dict[word] = my_list.count(word) #I changed the error here
return my_dict