I'm trying to write a program that takes two functions: 

1. **count\_word\_lengths** which takes the argument **text**, a string of text, and returns a default dictionary that records the count for each word length. An example call to this function:
2. **top5\_lengths** which takes the same argument **text** and returns a list of the top 5 word lengths.

Note: that in the event that
two lengths have the same frequency, they should be sorted in descending order. Also, if there are fewer than 5 word lengths it should return a shorter list of the sorted word lengths.

Example calls to **count\_word\_lengths**:

```
count_word_lengths("one one was a racehorse two two was one too"):
     defaultdict(<class 'int'>, {1: 1, 3: 8, 9: 1})

```

Example calls to **top5\_lengths**:

```
top5_lengths("one one was a racehorse two two was one too")
    [3, 9, 1]

top5_lengths("feather feather feather chicken feather")
    [7]

top5_lengths("the swift green fox jumped over a cool cat")
    [3, 5, 4, 6, 1]

```

My current code is this, and seems to output all these calls, however it is failing a hidden test. What type of input am I not considering? Is my code actually behaving correctly? If not, how could I fix this?

```
from collections import defaultdict

length_tally = defaultdict(int)
final_list = []

def count_word_lengths(text):
    words = text.split(' ')

    for word in words:
        length_tally[len(word)] += 1

    return length_tally

def top5_word_lengths(text):
    frequencies = count_word_lengths(text)
    list_of_frequencies = frequencies.items()
    flipped = [(t[1], t[0]) for t in list_of_frequencies]
    sorted_flipped = sorted(flipped)
    reversed_sorted_flipped = sorted_flipped[::-1]

    for item in reversed_sorted_flipped:
        final_list.append(item[1])

    return final_list

```