2016-10-07 1 views
-3

Je comprends qu'il existe une fonction sort(), mais cela ne fonctionnera pas pour moi ici. Je voudrais à l'ordre alphabétique une chaîne comme suit:Ordre alphabétique en python d'une chaîne

'S NOM V NOUN VERB' 

Il devrait être:

'NOM NOUN S VERB V' 

Comment puis-je parvenir en python?

Edit:

J'ai essayé:

''.join(sorted(m[i][j])) 

Mais ce retour avec une sortie très modifiée comme ABEILMNNNNOOPRSUVV par exemple qui n'a pas de sens.

+1

On dirait que vous voulez nous d'écrire un code pour vous. Bien que de nombreux utilisateurs soient prêts à produire du code pour un codeur en détresse, ils ne font généralement que contribuer lorsque l'affiche a déjà tenté de résoudre le problème par eux-mêmes. Une bonne façon de démontrer cet effort est d'inclure le code que vous avez écrit jusqu'ici, l'exemple d'entrée (s'il y en a), la sortie attendue, et la sortie que vous obtenez réellement (sortie console, retraçages, etc.). Plus vous fournissez de détails, plus vous aurez de chances de recevoir des réponses. Vérifiez la [FAQ] et [demander]. – idjaw

+3

split-sort-join –

+0

@idjaw, j'ai déjà dit ce que j'ai essayé – genuis

Répondre

1

Effectuez les opérations suivantes:

x = 'S NOM V NOUN VERB' 
x = x.split() # produces ['S', 'NOM', 'V', 'NOUN', 'VERB'] 
x = sorted(x) # produces ['NOM', 'NOUN', 'S', 'V', 'VERB'] 
x = ' '.join(x) # produces 'NOM NOUN S V VERB' 

Vous devez utiliser une fonction de tri personnalisé si vous voulez l'ordre de V et Verb être inversée (voir le mot-clé « clé » pour la fonction sorted).

+0

en utilisant trié est la clé ici je pense! – genuis

-1

Vous devez scinder la chaîne en une liste, puis la trier et la réintégrer dans une chaîne. Voici un exemple.

old_string = "hello world abc" 
string_list = old_string.split(" ") # split the string by a space, you can choose something different. 
new_string = " ".join(string_list.sort()) # join list by a space. 
print(new_string) 
+1

cela ne fonctionne pas parce que 'sort()' fonctionne "in-place" .Il change la liste originale et ne retourne pas un nouveau – furas

+0

En utilisant trié, et non sort() – genuis

3

Vous avez déjà au moins une bonne réponse. Vous pourriez aussi bien abstraite dans une fonction:

def sortWords(s, delim = ' '): 
    return delim.join(sorted(s.split(delim))) 

Par exemple,

>>> sortWords('S NOM V NOUN VERB') 
'NOM NOUN S V VERB'