# Finding average word length in a given year

I have written a function which takes the year in question and words as a data which is a dictionary that maps words to the list of year/count. Now I am wondering how I can improve the code that I have or how to make it more simpler or make it better performance-wise.

def avgWordLen(year, words):
totLen = 0
totword = 0
for word in words:
for nary in words[word]:
if nary.year == year:
totLen += len(word) * nary.count
totword += nary.count
if totword != 0:
else:
return 0


totword and totLen are not so good names. And in any case PEP8 suggests to use snake_case for both variable and function names. So I recommend the following renames:

• total_word_length instead of totLen
• word_count instead of totword
• average_word_length instead of avgWordLen

When you iterate over keys in a dictionary and then lookup the values in every iteration step, then it's better to iterate over the dictionary items. That is, instead of:

    for word in words:
for nary in words[word]:


Do like this:

    for word, nary_list in words.items():
for nary in nary_list:


This way you avoid unnecessary dictionary lookups.

At the end of the method, the else is unnecessary, because the if part always returns. It's slightly simpler this way:

    if word_count != 0: