
Hallo, als absoluter Programmieranfänger bin ich jetzt an einem Problem angelangt, bei dem mir auch stundenlange Onlinerecherche und Dokumentationssuche nicht mehr weiterhelfen: Ich habe eine Liste der folgender Art: Liste = ["a1a2a3","b1b2b3","c1c2c3"] Aus Ihr kann ich die folgende Liste splitten: Liste_split = [["a1","a2","a3"],["b1","b2","b3",],["c1","c2","c3"]] Diese Liste (egal welche) möchte ich mit sortieren: zunächst in steigender x2 Reihenfolge, sollten zwei x2 gleich sein, sollen diese nach steigendem x3 sortiert werden. Am Ende benötige ich eine Liste derart: ["b1b2b3", "a1a2a3","c1c2c3"] mit b2 < a2 und a2 == c2 und a3 < c3 Kann mir jemand bei der Lösung helfen? Schon einmal vielen Dank, Stefan _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

Stefan Büdenbender wrote:
Diese Liste (egal welche) möchte ich mit sortieren: zunächst in steigender x2 Reihenfolge, sollten zwei x2 gleich sein, sollen diese nach steigendem x3 sortiert werden.
Guck' mal hier: http://www.python.org/doc/current/lib/typesseq-mutable.html Du kannst sort eine Funktion mitgeben, die zum vergleichen genommen wird. Also (ungetested) in der Art: def my_cmp(a,b): return cmp(a[0],b[0]) or cmp(a[1],b[1]) Liste_split.sort(my_cmp) Evtl. kannst du dir so auch den split vorher sparen. Das ist die einfachste Lösung, aber eine Vergleichsfunktion mitzugeben ist für große Datenmengen nicht unbedingt die performateste Lösung. Da du aber schreibst, daß du Anfänger bist, verschone ich dich erstmal mit Details. Gruß, Achim _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

Vielen Dank für die schnelle Antwort. Und das Beste: It works. Geschwindigkeit ist eh sekundär, da die Liste maximal ca. 25 Eintrage hat. Also nochmla besten Dank, Gruß Stefan Achim Domma (Procoders) schrieb:
Stefan Büdenbender wrote:
Diese Liste (egal welche) möchte ich mit sortieren: zunächst in steigender x2 Reihenfolge, sollten zwei x2 gleich sein, sollen diese nach steigendem x3 sortiert werden.
Guck' mal hier: http://www.python.org/doc/current/lib/typesseq-mutable.html
Du kannst sort eine Funktion mitgeben, die zum vergleichen genommen wird. Also (ungetested) in der Art:
def my_cmp(a,b): return cmp(a[0],b[0]) or cmp(a[1],b[1])
Liste_split.sort(my_cmp)
Evtl. kannst du dir so auch den split vorher sparen. Das ist die einfachste Lösung, aber eine Vergleichsfunktion mitzugeben ist für große Datenmengen nicht unbedingt die performateste Lösung. Da du aber schreibst, daß du Anfänger bist, verschone ich dich erstmal mit Details.
Gruß, Achim
_______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
participants (2)
-
Achim Domma (Procoders)
-
Stefan Büdenbender