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 (2016, retired 2019) Dictionaries Word Count

Tyler Hoerner
Tyler Hoerner
5,534 Points

Python Collections Challenge: It seems like I get the correct answer, but the challenge disagrees.

When I run this in the workspace it seems to give the correct answer. Please point me in the right direction.

Thanks!

wordcount.py
# E.g. word_count("I do not like it Sam I Am") gets back a dictionary like:
# {'i': 2, 'do': 1, 'it': 1, 'sam': 1, 'like': 1, 'not': 1, 'am': 1}
# Lowercase the string to make it easier.

def word_count(string):
    string = string.lower()
    dictionary = {}
    for x in string.split(" "):
        if x in dictionary.keys():
          dictionary[x] += 1
        else:
          dictionary[x] = 1
    return dictionary
Tyler Hoerner
Tyler Hoerner
5,534 Points

That did the trick! Thanks Robin

1 Answer

Robin Goyal
Robin Goyal
4,582 Points

You are incredibly close! The only minor detail is that when you are splitting the string for the for loop, you don't want to split on the space character only. This ignores whitespace such as tab characters and newline characters. If you omit any string for the split function, it'll by default split on all whitespace. You can see this in the examples below.

>>> string = "This is the Treehouse\nPython Track"
>>> print(string)
This is the Treehouse
Python Track
>>> string.split(" ")
['This', 'is', 'the', 'Treehouse\nPython', 'Track']
>>> string.split()
['This', 'is', 'the', 'Treehouse', 'Python', 'Track']

So in string.split(" "), the newline character between Treehouse and Python isn't removed since it doesn't match the space character but string.split() with no argument will remove any whitespace.