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

Word Count Challenge...

I'm having a lot of trouble understanding how to do this challenge - I tried to solve it on my own with the code below being my latest attempt - So, I would appreciate a breakdown of how I should proceed with this challenge from someone - Thank you in advance, and here is the exercise as well that I'm currently working on:

I need you to make a function named word_count. It should accept a single argument which will be a string. The function needs to return a dictionary. The keys in the dictionary will be each of the words in the string, lowercased. The values will be how many times that particular word appears in the string.

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(Axanar):
    Axanar_dict = {}
    list_of_words = re.split(Axanar.lower())
    for a in list_of_words:
        try:
            Axanar_dict[a] += 1
        except KeyError:
            Axanar_dict[a] = 1

    print(Axanar_dict)
    return Axanar_dict

2 Answers

Stuart Wright
Stuart Wright
41,119 Points

You have the right idea. You just have the wrong syntax for splitting the string into a list of words.

The correct way is:

list_of_words = Axanar.lower().split()

Change that one line and your code should pass.

I changed the line, but my code still doesn't pass the challenge:

def word_count(Axanar):
    Axanara_dict = {}
    list_of_words = Axanar.lower().split()
    for a in list_of_words:
        try:
            Axanar_dict[a] += 1
        except KeyError:
            Axanar_dict[a] = 1

    print(Axanar_dict)
    return Axanar_dict
Stuart Wright
Stuart Wright
41,119 Points

Your latest version contains a typo. Fix that and you're good to go:

Axanara_dict = {}
      ^

Whew, Jesus - Thank you, Stuart... P :)