Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

Python Python Collections (2016, retired 2019) Dictionaries Word Count

Ian Cole
Ian Cole
454 Points

Dictionary Word_Count Problems

So I don't understand how this is not passing. I run this outside of the challenge and it does exactly what it's supposed to, separates at all the whitespace and lowercases the output.

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):
    lower_string = string.lower()
    split_string = lower_string.split(" ")
    word_dict = {}
    for word in split_string:
        if word in word_dict:
            word_dict[word] += 1
        else:
            word_dict[word] = 1
        word_count = word_dict
    return word_count                                                                                                                                                                                       

1 Answer

Alex Koumparos
seal-mask
.a{fill-rule:evenodd;}techdegree
Alex Koumparos
Python Development Techdegree Student 36,862 Points

Hi Ian,

The problem is with how you are splitting the string. You are using the argument " " which is fine if you know that the string is going to have single whitespace spacing. If you don't know that, and there is the possibility that there could be double spaces (or some other multiple) or other whitespace characters (e.g., tabs) then you could end up with an array that's not what you expect.

For example, your use of split would turn "hello world" into ["hello", "", "world"] and "hello\tworld" into ["hello\tworld"]. Although the text of the challenge doesn't expressly state that you might get strings of words that are spaced with something other than single space characters, the parser does give a hint when it tells you, "didn't get the expected output. Be sure you're lowercasing the string and splitting on all whitespace!".

To split on all whitespace instead of single spaces, you just use the split method without any arguments. So "hello world".split() and "hello\tworld".split() will both produce ["hello", "world"].

Hope this clears everything up for you.

Cheers

Alex

Ian Cole
Ian Cole
454 Points

Thanks, it worked! I actually didn't know that was how white-space was handled.