Python: Array sortieren?
Hallo, ich habe in Python ein Array mit verschiedenen Werten. Der Array sieht so aus:
["4 Test", "2 Hallo", "1 Python", "3 Ein Array Wert"]
Wenn ich jezt schreibe print(meinArray[0]) bekomme ich die Ausgabe: "4 Test".
Ich möchte dass je nachdem welche Zahl am Anfang eines Wertes ist, dieser Wert an dieser Stelle steht. Das ist glaube ich nicht so gut erklärt also schreibe ich wie der Array in diesem Beispiel am Ende aussehen muss:
["1 Python", "2 Hallo", "3 Ein Array Wert", "4 Test"]
Wie kann ich das machen?
2 Antworten
Ganz Einfach. Es gibt die Methode „sorted“ da kannst du eine lambda expression mitgeben, wonach sortiert werden soll.
indem Fall sagst du. du willst dass das erste Element aus dem String. Als integer zum sortieren verwendet wird.
ar = ["4 Test", "2 Hallo", "1 Python", "3 Ein Array Wert"]
ar = sorted(ar, key=lambda i: int(i[0]))
Es würde auch ohne int(i[0]) gehen, mit nur i[0]. Dann wird einfach der ascii wert zum sortieren verwendet (wo auch das richtige rauskommen wird).
trotzdem ist es mit int() einfacher zu lesen und verstehen. In Python schreibt man Code lieber explizit und nicht impliziert.
Da ich darauf hingewiesen wurde das es mit zweistelligen Zahlen nicht geht:
Statt int(i[0]) kannst du entweder den String splitten oder eine Regex benutzen.
Ich denke als Anfänger ist das splitten einfacher.
Das geht dann so:
int(i.split(" ")[0])
oder du verwendest die Methode von TechPech1984. Da solltest du dir aber ein kleines Kommentar dazu schreiben wieso es richtig sortiert wird,
Das stimmt ;) so wie ich das sehe hat der User ein spezielles Array gegeben. Und da gibt es keine zweistelligen Zahlen.
Es kann aber zweistellige Zahlen geben. Also das oben war ein Beispiel
Deswegen hab ich noch das hinzugefügt:
Einfach das als Key verwenden.
int(i.split(" ")[0])
liste = ["4 Test", "2 Hallo", "1 Python", "3 Ein Array Wert"]
print('Sorted array ->',sorted(liste, key=str.lower))
Bitte mit Erklärung damit sich andere auch auskennen.
Reiner Code ist eine schlechte Antwort und hilft Personen die sich nicht auskennen oft nicht weiter.
haben wir das problem ab 10 ...