Listen nach mehreren Vorgaben sortieren
Verfasst: Freitag 10. Februar 2006, 15:57
Hallo,
ich hatte schon in diversen Cookbooks geschaut und auch hier gesucht.
Ich muss Listen in einer Liste nach 2 Suchkriterien sortieren.
Das sieht etwas so aus:
[["Bob","34 Jahre","183 cm","45 kg"],["Bob","67 Jahre","209 cm","120 kg"],["Charly","23 Jahre","172","56 kg"]] usw.
Das Problem: Nach dem ersten Index soll immer sortiert werden (also "Bob","Bob","Charly" etc.), jedoch soll per Variable mitgegeben werden, nach welchem Index ich als nächstes sortiere also nach Alter, Größe, Gewicht.
Man soll am Ende eine Liste bekommen, in der alle Leute nach Namen sortiert sind, aber eben variabel (wie ich das löse ist schon klar) nach Gewicht ODER Größe ODER Alter.
Ich hab das schon versucht:
Hier kann ich wenigstens schon mal aussuchen, nach welchem Index ich sortieren möchte. Das nütz mir aber nix, weil ich eben nur nach EINEM index sortieren kann.
Ich hatte mir schon überlegt, für jeden Namen eine eigene Liste zu erstellen, aber das ist nicht variabel genug.
Wie kann man da rangehen?
ich hatte schon in diversen Cookbooks geschaut und auch hier gesucht.
Ich muss Listen in einer Liste nach 2 Suchkriterien sortieren.
Das sieht etwas so aus:
[["Bob","34 Jahre","183 cm","45 kg"],["Bob","67 Jahre","209 cm","120 kg"],["Charly","23 Jahre","172","56 kg"]] usw.
Das Problem: Nach dem ersten Index soll immer sortiert werden (also "Bob","Bob","Charly" etc.), jedoch soll per Variable mitgegeben werden, nach welchem Index ich als nächstes sortiere also nach Alter, Größe, Gewicht.
Man soll am Ende eine Liste bekommen, in der alle Leute nach Namen sortiert sind, aber eben variabel (wie ich das löse ist schon klar) nach Gewicht ODER Größe ODER Alter.
Ich hab das schon versucht:
Code: Alles auswählen
a = [["Bob","34 Jahre","183 cm","45 kg"],["Bob","67 Jahre","209 cm","120 kg"],["Charly","23 Jahre","172","56 kg"]]
def compare(a,b):
return cmp(a[1],b[1])
a.sort(compare)
print a
Ich hatte mir schon überlegt, für jeden Namen eine eigene Liste zu erstellen, aber das ist nicht variabel genug.
Wie kann man da rangehen?