Sortieren in einer Liste

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
John Fischer
User
Beiträge: 6
Registriert: Freitag 29. Mai 2020, 14:46

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'] ]
NPC
User
Beiträge: 54
Registriert: Dienstag 8. Januar 2019, 17:51

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:

Code: Alles auswählen

def show_key(x):
    print(x)
    return 1
Man erhält dann:

Code: Alles auswählen

>>> L.sort(key=show_key)
['Donald', 'Trump', 77, 'Washington']
['Simon', 'Hofer', 63, 'Berlin']
['Boris', 'Johnson', 49, 'London']
Die Lösung ist dann schlicht das entsprechende Element aus der subliste für die len zu verwenden:

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]))
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.
John Fischer
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
Benutzeravatar
__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
Antworten