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

Sam Wederell
Sam Wederell
20,276 Points

My solution works on a sample but gets marked as incorrect

My code works for the Dr. Seuss sample text and a few others that I've tried, however, it doesn't seem to work for the string being used to test to pass. What am I missing? It converts to lowercase and splits on whitespace.

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.lower()
    word_list = string.split()
    word_dict = {}
    for word in word_list:
        try:
            word_dict[word] = word_dict[word] + 1
        except KeyError:
            word_dict[word] = 1
    return word_dict

1 Answer

Jennifer Nordell
seal-mask
STAFF
.a{fill-rule:evenodd;}techdegree
Jennifer Nordell
Treehouse Teacher

Hi there! Yes, it does convert to lower case, but it doesn't save that conversion anywhere. It's just sort of floating out there in Python limbo. So when you do the string.split() it's back to uppercase again.

Where you wrote:

string.lower()

You should have:

string = string.lower()

This will lowercase the string and then save the results back into the string variable.

Hope this helps! :sparkles:

Sam Wederell
Sam Wederell
20,276 Points

Thanks. works perfectly now