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 trial

Python Python Collections (Retired) Dictionaries Word Count

Hello. I am totally lost in this challenge. I have a rough idea of how to proceed but i can't get it right.

So i start assigning the string to a variable:

mystring = "this is not what this is"

Then define the function with mystring as an argument

def word_count(mystring):

inside the function, convert the string into a list and set a counter for the repeated words

mylist = mystring.split() counter = 0

so far, so good. Now, here is the beginning of my confussion; for word in mylist: if word is in mylist counter += 1 mydict [word] = counter

I know my problem is in my logic, somewhere within my function.

Can you help me?

Thank you.

word_count.py
# 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.

1 Answer

Kenneth Love
STAFF
Kenneth Love
Treehouse Guest Teacher

You probably don't want a counter outside of your loop. When the first word shows up, your counter goes to 1. What does it do for the second word?

Instead, start with a dictionary that'll hold the words and how many times they shown up. If the word isn't in the dictionary, add it and set the value to 1 (since you've now seen it 1 time). If it's already there, add 1 to the word's current value in the dict.