Python: Array sortieren?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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,

TechPech1984  27.02.2021, 15:46

haben wir das problem ab 10 ...

1
Hairgott  27.02.2021, 15:47
@TechPech1984

Das stimmt ;) so wie ich das sehe hat der User ein spezielles Array gegeben. Und da gibt es keine zweistelligen Zahlen.

0
name123454321 
Fragesteller
 02.03.2021, 10:16
@Hairgott

Es kann aber zweistellige Zahlen geben. Also das oben war ein Beispiel

0
Hairgott  02.03.2021, 10:17
@name123454321

Deswegen hab ich noch das hinzugefügt:

Einfach das als Key verwenden.

int(i.split(" ")[0])

1
liste = ["4 Test", "2 Hallo", "1 Python", "3 Ein Array Wert"]
print('Sorted array ->',sorted(liste, key=str.lower))
Hairgott  27.02.2021, 15:47

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.

0