Listen von Listen nach multiplen Kriterien sortieren: aehnliche Werte gleich behandeln
Verfasst: Mittwoch 20. März 2019, 15:44
Hi,
ich moechte eine Liste von Listen nach mehreren Kriterien sortieren, so dass aehnliche Werte als gleich behandelt werden.
Genauer.
Es gibt eine Liste mit bis zu 12 Listen a 3 Werte (x, y, r).
Ich moechte die Liste als erstes Kriterium nach y und zweitens nach x sortieren.
Soweit so gut.
Das Problem was ich habe ist, dass fuer jeweils 3 Unterlisten der y Wert nicht identisch aber aehnlich ist, jedoch fuer die Sortierung aehnliche y Werte als identische behandelt werden sollen, so dass bei diesen, nach dem zweiten Kriterium sortiert wird.
1) sortiere nach ~ y
2) sortiere nach x
Also sowas rauskommt:
Meine urspruengliche Idee war es, die Liste erst nach y zu sortieren und dann eine Teilliste nach x zu sortieren.
Nur scheint das keinen Effekt zu haben.
Hat jemand eine Idee, wie ich die Liste als erstes Kriterium nach aehnlichen y Werten sortieren kann und als zweites nach x Werten?
Danke schonmal fuer die Hilfe!
ich moechte eine Liste von Listen nach mehreren Kriterien sortieren, so dass aehnliche Werte als gleich behandelt werden.
Genauer.
Es gibt eine Liste mit bis zu 12 Listen a 3 Werte (x, y, r).
Code: Alles auswählen
circles = [[536, 565, 326], [2132, 578, 323], [1296, 590, 321], [2108, 1408, 326], [ 509, 1418, 324], [1290, 1450, 324], [2134, 2269, 321], [1320, 2300, 323], [ 534, 2320, 318], [2138, 3137, 318], [ 485, 3145, 321], [1331, 3145, 326]]
Soweit so gut.
Code: Alles auswählen
circles.sort(key = lambda x: (x[1],x[0]))
1) sortiere nach ~ y
2) sortiere nach x
Also sowas rauskommt:
Code: Alles auswählen
[ x, y, r]
[536, 565, 326],
[1296, 590, 321],
[2132, 578, 323],
[509, 1418, 324],
[1290, 1450, 324],
[2108, 1408, 326]
Code: Alles auswählen
circles[0:3].sort(key = lambda x: x[0])
Hat jemand eine Idee, wie ich die Liste als erstes Kriterium nach aehnlichen y Werten sortieren kann und als zweites nach x Werten?
Danke schonmal fuer die Hilfe!