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.

# 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
          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,581 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.