Cómo ordenar las letras en una cadena alfabéticamente en Python

¿Hay una manera fácil de ordenar las letras en una cadena alfabéticamente en Python?

Así que para

a = 'ZENOVW' 

Me gustaria regresar:

 'ENOVWZ' 

Tu puedes hacer:

 >>> a = 'ZENOVW' >>> ''.join(sorted(a)) 'ENOVWZ' 
 >>> a = 'ZENOVW' >>> b = sorted(a) >>> print b ['E', 'N', 'O', 'V', 'W', 'Z'] 

sorted devuelve una lista, por lo que puede convertirla en una cadena nuevamente usando join :

 >>> c = ''.join(b) 

que une los elementos de b junto con una cadena vacía '' entre cada elemento.

 >>> print c 'ENOVWZ' 

La solución ordenada () le puede dar algunos resultados inesperados con otras cadenas.

Lista de otras soluciones:

Ordena las letras y hazlas distintas:

 >>> s = "Bubble Bobble" >>> ''.join(sorted(set(s.lower()))) ' belou' 

Ordena las letras y hazlas distintas manteniendo mayúsculas

 >>> s = "Bubble Bobble" >>> ''.join(sorted(set(s))) ' Bbelou' 

Ordenar letras y mantener duplicados:

 >>> s = "Bubble Bobble" >>> ''.join(sorted(s)) ' BBbbbbeellou' 

Si desea deshacerse del espacio en el resultado, agregue la función strip () en cualquiera de los casos mencionados:

 >>> s = "Bubble Bobble" >>> ''.join(sorted(set(s.lower()))).strip() 'belou' 

Puedes usar reducir

 >>> a = 'ZENOVW' >>> reduce(lambda x,y: x+y, sorted(a)) 'ENOVWZ' 

el código se puede usar para ordenar las cadenas en orden alfabético sin usar ninguna función incorporada de python

k = entrada (“Introduzca cualquier cadena nuevamente”)

 li = [] x = len(k) for i in range (0,x): li.append(k[i]) print("List is : ",li) for i in range(0,x): for j in range(0,x): if li[i] 

La función de Python sorted devuelve un resultado basado en ASCII para la cadena.

INCORRECTO : En el ejemplo a continuación, e y d están detrás de H y W debido a su valor ASCII.

 >>>a = "Hello World!" >>>"".join(sorted(a)) ' !!HWdellloor' 

CORRECTO : Para escribir la cadena ordenada sin cambiar el caso de la letra. Usa el código:

 >>> a = "Hello World!" >>> "".join(sorted(a,key=lambda x:x.lower())) ' !deHllloorW' 

Si desea eliminar todos los signos de puntuación y números. Usa el código:

 >>> a = "Hello World!" >>> "".join(filter(lambda x:x.isalpha(), sorted(a,key=lambda x:x.lower()))) 'deHllloorW' 

Realmente me gustó la respuesta con la función reduce (). Aquí hay otra forma de ordenar la cadena usando el acumulado ().

 from itertools import accumulate s = 'mississippi' print(tuple(accumulate(sorted(s)))[-1]) 

ordenado (s) -> [‘i’, ‘i’, ‘i’, ‘i’, ‘m’, ‘p’, ‘p’, ‘s’, ‘s’, ‘s’, ‘s’ ]

tupla (acumular (ordenada (s)) -> (‘i’, ‘ii’, ‘iii’, ‘iiii’, ‘iiiim’, ‘iiiimp’, ‘iiiimpp’, ‘iiiimpps’, ‘iiiimppss’, ‘iiiimppsss ‘,’ iiiimppssss ‘)

Estamos seleccionando el último índice (-1) de la tupla.