Ordenar una lista en Python

publicado por: Anonymous

Quiero hacer un programa donde le pregunte al usuario nombres y este los guarde y ordene alfabéticamente.

Esto es lo que tengo ahora:

    names = input("What are the names? ") 
    print(names) 
    sorted_names = sorted(names) 
    print(sorted_names)

pero cuando corro el programa sale esto

[' ', ' ', ' ', 'M', 'M', 'Z', 'a', 'a', 'c', 'c', 'i', 'l', 'o', 'o', 'p', 'r', 't', 't']

ordena cada letra alfabéticamente.

¿Cómo hacer que los nombres salgan completos y ordenados alfabéticamente?

solución

El problema es que al aplicar sorted a la cadena conviertes el string al completo en una lista, es decir, cada carácter pasa a ser un elemento de una lista ordenada.

Debes crear una lista en la que cada nombre sea un elemento y sobre ella aplicar el método de ordenamiento. Para ello usa el método str.split:

names = input("What are the names? ")
sorted_names = sorted(names.split())
print(sorted_names)

Esto es si separas los nombres con espacios, en caso contrario pásale a split el separador que desee usar, por ejemplo para usar una coma names.split(",").

En caso de que quieras ordenar sin tener sensibilidad a mayúsculas (pero sin modificar el string original) puedes usar el argumento key:

names = input("What are the names? ")
sorted_names = sorted(names.split(),  key=lambda x: x.lower())
print(sorted_names)
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *