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

Srikanth Srinivas
Srikanth Srinivas
1,465 Points

Why 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

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.

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
Martin Cornejo Saavedra
18,132 Points

You 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