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

Sebastiaan van Vugt
seal-mask
.a{fill-rule:evenodd;}techdegree seal-36
Sebastiaan van Vugt
Python Development Techdegree Graduate 13,554 Points

Why is my word count function not accepted? I think it works.

I believe that the following function can put all words of a phrase in a dictionary in lower case and count the number of duplicates. Still, my answer is not accepted. Does anyone have an idea why?

def word_count(stringy):
    wcd = {}
    stringy = stringy.lower()
    wcdl = stringy.split(" ")
    for word in wcdl:
        wcd[word] = 0
    for word in wcdl:
        wcd[word] += 1
    return(wcd)

Thank you.

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(stringy):
    wcd = {}
    stringy = stringy.lower()
    wcdl = stringy.split(" ")
    for word in wcdl:
        wcd[word] = 0
    for word in wcdl:
        wcd[word] += 1
    return(wcd)

1 Answer

Steven Parker
Steven Parker
229,608 Points

The error message contains a hint: "Bummer: Hmm, didn't get the expected output. Be sure you're lowercasing the string and splitting on all whitespace!"

To split on "all whitespace", you should leave the argument to "split" empty. Providing a space as the argument causes it to split only on explicit space characters.

Sebastiaan van Vugt
seal-mask
.a{fill-rule:evenodd;}techdegree seal-36
Sebastiaan van Vugt
Python Development Techdegree Graduate 13,554 Points

Thanks a lot. I indeed noticed that with my function it goes wrong when multiple (connected) spaces are used. Leaving the "split" empty solves this issue.