Guten Mittag,
Ich hab ein Problem beim sortieren einer Liste in einer Liste, es soll nach der länge der strings sortiert werden, ich weiß jedoch nicht was ich ändern muss um zb. nur nach länge des Vorname, Nachname oder der Adresse zu sortieren
L = [' aaa','bb','ddddd','cc' ]
L.sort(key = len)
print(L)
L = [ ['Donald', 'Trump', 77, 'Washington'], ['Simon','Hofer', 63, 'Berlin'], ['Boris', 'Johnson', 49, 'London'] ]
Sortieren in einer Liste
Hallo John,
key bekommt das gesame Element (in diesem Fall also die Subliste übergeben).
Du kannst dir das mal ansehen, wenn du z.B. eine dummy Funktion zum Printen nutzt:
Man erhält dann:
Die Lösung ist dann schlicht das entsprechende Element aus der subliste für die len zu verwenden:
Du solltest dir aber überlegen ob eine Liste von Listen hier wirklich die Ideale Lösung ist, wenn du dabei für einzele Personen Nachname, Vorname, ... speichern willst.
key bekommt das gesame Element (in diesem Fall also die Subliste übergeben).
Du kannst dir das mal ansehen, wenn du z.B. eine dummy Funktion zum Printen nutzt:
Code: Alles auswählen
def show_key(x):
print(x)
return 1
Code: Alles auswählen
>>> L.sort(key=show_key)
['Donald', 'Trump', 77, 'Washington']
['Simon', 'Hofer', 63, 'Berlin']
['Boris', 'Johnson', 49, 'London']
Code: Alles auswählen
def sort_len_firstname(x):
return len(x[0])
L.sort(key=sort_len_firstname)
# oder Kurz
L.sort(key=lambda x: len(x[0]))
-
- User
- Beiträge: 6
- Registriert: Freitag 29. Mai 2020, 14:46
Vielen Vielen Dank, damit ist mir enorm geholfen, ich kann mir leider nicht aussuchen ob ich die Aufgabe so bearbeiten will, das ist ein kleiner Teil einer Langzeitaufgabe die ich bekommen habe
- __blackjack__
- User
- Beiträge: 13110
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@John Fischer: In dem Fall würde man sich am besten Konstanten für die nichtssagenden Indexwerte definieren, damit das lesbar bleibt bei den magischen Zahlen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman