Returning-longitud del diccionario de palabras en cadena [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Agregar más de un valor al diccionario al recorrer la cadena 7 respuestas

Necesito construir una función que tome como entrada una cadena y devuelva un diccionario.
Las claves son números y los valores son listas que contienen las palabras únicas que tienen un número de letras igual a las claves.
Por ejemplo, si la función de entrada es la siguiente:

n_letter_dictionary("The way you see people is the way you treat them and the Way you treat them is what they become")

La función debería devolver:

{2: ['is'], 3: ['and', 'see', 'the', 'way', 'you'], 4: ['them', 'they', 'what'], 5: ['treat'], 6: ['become', 'people']}

El código que he escrito es el siguiente:

def n_letter_dictionary(my_string):
    my_string=my_string.lower().split()
    sample_dictionary={}
    for word in my_string:
        words=len(word)
        sample_dictionary[words]=word
    print(sample_dictionary)
    return sample_dictionary

La función está devolviendo un diccionario de la siguiente manera:

{2: 'is', 3: 'you', 4: 'they', 5: 'treat', 6: 'become'}

l diccionario no contiene todas las palabras con el mismo número de letras, pero solo devuelve la última de la cadena.

Respuestas a la pregunta(7)

Su respuesta a la pregunta