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

Paul Brubaker
Paul Brubaker
3,862 Points

In the word count challenge, is it bad practice to have my program raise an exception for each "new" word?

I am wondering if it is normal to have my program raise exceptions like this for each new word that is not found in the list as a normal part of the programs operation. That is, is it a bad habit to use exception raising in this way? Should I be doing this differently, or does it not really matter?

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

1 Answer

Steven Parker
Steven Parker
171,120 Points

I'm not sure if this would constitute "bad practice", but rather than causing and catching errors you could easily perform a test to determine which action to take:

        if word in word_count_dict:
            word_count_dict[word] += 1
        else:
            word_count_dict[word] = 1
Paul Brubaker
Paul Brubaker
3,862 Points

That seems like a better may to do it. Thanks Steven! I am so new to this, that I'm sure the solutions I come up with will be "unnecessarily creative" at times and I understand that is something to be avoided in python.

Steven Parker
Steven Parker
171,120 Points

Paul Brubaker — Glad to help. You can mark a question solved by choosing a "best answer".
And happy coding!