2015-07-09 26 views
6

Ich versuche, ein Programm zu schreiben, das eine Liste der Zeichenfolgen basierend auf dem letzten Zeichen in dem Element bestellt.Python: Wie Liste nach dem letzten Zeichen der Zeichenfolge sortieren

["Tiger 6", "Shark 4", "Cyborg 8"] sind, wie meine Liste importiert wird, aber ich muss sie in numerischer Reihenfolge basierend auf den Zahlen am Ende setzen.

Vielen Dank im Voraus!

+0

sind die Zahlen immer einzelne Ziffern? –

+0

In diesem Fall ja. –

Antwort

9

Ich versuche, ein Programm zu schreiben, das eine Liste der Zeichenfolgen basierend auf dem letzten Zeichen in dem Element anordnet.

>>> s = ["Tiger 6", "Shark 4", "Cyborg 8"] 
>>> sorted(s, key=lambda x: int(x[-1])) 
['Shark 4', 'Tiger 6', 'Cyborg 8'] 

Versuchen Sie dies, wenn es mehr num von Ziffern am letzten sind.

>>> import re 
>>> sorted(s, key=lambda x: int(re.search(r'\d+$',x).group())) 
['Shark 4', 'Tiger 6', 'Cyborg 8'] 

re.search(r'\d+$',x).group() hilft, die Anzahl, die an der letzten unabhängig von vorhergehenden Raum zu holen.

+0

Warum ein Lambda für den Schlüssel anstelle einer * Funktion * verwenden. – wwii

+0

Lambda wird verwendet, um anonyme Funktion zu erstellen. –

1

Wenn die Zahlen nicht einstelligen Bereich sind, können Sie versuchen -

>>> l = ["Tiger 6", "Shark 4", "Cyborg 8", "Temporary 12"] 
>>> l.sort(key = lambda x: int(x.rsplit(' ',1)[1])) 
>>> l 
['Shark 4', 'Tiger 6', 'Cyborg 8', 'Temporary 12'] 

str.rsplit(s, n) Funktion beginnt am Ende in Richtung Anfang der Zeichenfolge die Zeichenfolge aufgeteilt und stoppt nach n Splits. Im obigen Fall teilt es die Zeichenfolge nur einmal in einem Leerzeichen.

Verwandte Themen