es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Encontrar las cinco palabras más largas en una lista en Python y ordenarlas en orden alfabético.

Es la primera vez que trabajo con Python para una tarea de la universidad y estoy enfrentando una dificultad en relación con una tarea que dice lo siguiente:

Extraer las cinco palabras más largas en todo el texto, crear una lista con estos elementos y ordenarlos alfabéticamente. Imprimir estos resultados en la pantalla (por ejemplo, “Las cinco palabras más largas en este texto ordenadas alfabéticamente son: “palabra1”, “palabra2”, “palabra3”, “palabra4”, “palabra5” ‘)

Entonces, el código que he creado hasta ahora es:

“`python
longeststring = sorted(wordlist, key=len)
print(longest_string)

secondlongeststring = sorted(wordlist, key=len)[-2]
print(segundolongest_string)

thirdlongeststring = sorted(wordlist, key=len)[-3]
print(thirdlongest_string)

fourthlongeststring = sorted(wordlist, key=len)[-4]
print(fourthlongest_string)

fifthlongeststring = sorted(list1, key=len)[-5]
print(quintolongest_string)

Pensé que podría empezar por esto y luego proceder al orden alfabético, pero parece que este código genera una salida diferente cada vez, porque dentro de la lista hay muchas cadenas que tienen el mismo número de palabras.

¿Alguna idea de cómo puedo proceder?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás ordenando la lista basándote en la longitud de las cadenas, lo que puede no darte resultados consistentes. Para extraer las cinco palabras más largas del texto y ordenarlas alfabéticamente, puedes seguir estos pasos:

    1. Crear una lista de todas las palabras en el texto usando el método split().
    2. Crear una lista de palabras únicas en el texto usando el método set() para evitar palabras duplicadas.

    3. Ordenar las palabras en la lista en orden alfabético usando la función sorted().

    4. Ordenar las palabras en la lista en orden reverso según su longitud usando el parámetro key en la función sorted().

    5. Extraer los primeros 5 elementos de la lista ordenada lo que te dará las 5 palabras más largas.

    6. Concatenar la lista de palabras más largas a una cadena y luego imprimirla junto con el mensaje requerido.

    Estos son los pasos que puedes implementar en tu código:

    # Paso 1
    word_list = text.split()
    
    # Paso 2
    unique_words = list(set(word_list))
    
    # Paso 3
    alpha_order = sorted(unique_words)
    
    # Paso 4
    longest_words = sorted(unique_words, key=len, reverse=True)[:5]
    
    # Paso 5
    longest_words_sorted = sorted(longest_words)
    
    # Paso 6
    message = "Las cinco palabras más largas en este texto, ordenadas alfabéticamente son: "
    result = ", ".join('"' + palabra + '"' for palabra in longest_words_sorted)
    print(message + result)
    

    Este código primero divide el texto en una lista de palabras, crea una lista de palabras únicas, ordena la lista alfabéticamente, ordena la lista basándose en la longitud de cada palabra en orden reverso, toma los primeros cinco elementos de la lista, ordena las palabras más largas en orden alfabético, concatena el mensaje requerido y las palabras más largas en una cadena y finalmente imprime el mensaje junto con las palabras más largas en orden alfabético.

    Esto debería darte el resultado deseado cada vez.

Comments are closed.