Gewusst wie: Sortieren einer Liste von Tupeln, die durch Ihr erstes element?
Habe ich eine Liste von Tupeln:
self.gridKeys = self.gridMap.keys() # The keys of the instance of the GridMap (It returns the product of every possible combination of positions in the specified grid, in tuples.)
print self.gridKeys
selbst.gridKeys:
[(7, 3), (6, 9), (0, 7), (1, 6), (3, 7), (2, 5), (8, 5), (5, 8), (4, 0), (9, 0), (6, 7), (5, 5), (7, 6), (0, 4), (1, 1), (3, 2), (2, 6), (8, 2), (4, 5), (9, 3), (6, 0), (7, 5), (0, 1), (3, 1), (9, 9), (7, 8), (2, 1), (8, 9), (9, 4), (5, 1), (7, 2), (1, 5), (3, 6), (2, 2), (8, 6), (4, 1), (9, 7), (6, 4), (5, 4), (7, 1), (0, 5), (1, 0), (0, 8), (3, 5), (2, 7), (8, 3), (4, 6), (9, 2), (6, 1), (5, 7), (7, 4), (0, 2), (1, 3), (4, 8), (3, 0), (2, 8), (9, 8), (8, 0), (6, 2), (5, 0), (1, 4), (3, 9), (2, 3), (1, 9), (8, 7), (4, 2), (9, 6), (6, 5), (5, 3), (7, 0), (6, 8), (0, 6), (1, 7), (0, 9), (3, 4), (2, 4), (8, 4), (5, 9), (4, 7), (9, 1), (6, 6), (5, 6), (7, 7), (0, 3), (1, 2), (4, 9), (3, 3), (2, 9), (8, 1), (4, 4), (6, 3), (0, 0), (7, 9), (3, 8), (2, 0), (1, 8), (8, 8), (4, 3), (9, 5), (5, 2)]
Nach der Sortierung:
self.gridKeys = self.gridMap.keys() # The keys of the instance of the GridMap (It returns the product of every possible combination of positions in the specified grid, in tuples.)
self.gridKeys.sort() # They're dicts, so they need to be properly ordered for further XML-analysis.
print self.gridKeys
selbst.gridKeys:
[(0, 0), (0, 1), (0, 2), (0, 3), (0, 4), (0, 5), (0, 6), (0, 7), (0, 8), (0, 9), (1, 0), (1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (1, 7), (1, 8), (1, 9), (2, 0), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (2, 6), (2, 7), (2, 8), (2, 9), (3, 0), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (3, 6), (3, 7), (3, 8), (3, 9), (4, 0), (4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (4, 6), (4, 7), (4, 8), (4, 9), (5, 0), (5, 1), (5, 2), (5, 3), (5, 4), (5, 5), (5, 6), (5, 7), (5, 8), (5, 9), (6, 0), (6, 1), (6, 2), (6, 3), (6, 4), (6, 5), (6, 6), (6, 7), (6, 8), (6, 9), (7, 0), (7, 1), (7, 2), (7, 3), (7, 4), (7, 5), (7, 6), (7, 7), (7, 8), (7, 9), (8, 0), (8, 1), (8, 2), (8, 3), (8, 4), (8, 5), (8, 6), (8, 7), (8, 8), (8, 9), (9, 0), (9, 1), (9, 2), (9, 3), (9, 4), (9, 5), (9, 6), (9, 7), (9, 8), (9, 9)]
Das erste element jedes Tupels ist die "x" und das zweite "y". Ich bin bewegende Objekte in einer Liste durch iteration und die Verwendung dieser Tasten (Also, wenn ich will, um etwas zu bewegen in der x-Achse, ich habe zu gehen durch alle Spalte, und das könnte die Ursache eine schreckliche problem, dass ich nicht in der Lage, zu lösen).
Wie kann ich die Sortierung der Tupel in dieser Weise?:
[(1, 0), (2, 0), (3, 0), (4, 0), (5, 0), ...]
- Aber das ist nicht, diese zu Sortieren, indem Sie Ihr erstes element, das Sortieren, die von Ihrem zweiten element, dann ist Ihre ersten. Ist es das, was du meintest?
- Ich denke OP meinte
first element
zuelement at index 1
- Ich meinte der erste index, der jedes Tupel (Jetzt habe ich ein bisschen verwirrt, aber die Letzte Liste da unten ist der "Sortierung", die ich erreichen will).
self.gridKeys.sort(key=lambda x: x[1])
InformationsquelleAutor Ericson Willians | 2014-04-05
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die
key
parameter dersort
- Funktion, die Sortierung der Tupel. Die Funktion derkey
parameter ist ein Wert, der verwendet werden zum vergleichen zweier Objekte. Also, in deinem Fall, wenn Sie wollen, dass diesort
zu verwenden, wird nur das erste element im Tupel ist, können Sie so etwas tunWenn Sie möchten, verwenden Sie nur das zweite element im Tupel, dann
sort
Funktion übergeben wird, jede und jedes element in der Liste, um die lambda-Funktion übergeben Sie als parameter zukey
und verwenden den Wert, den es gibt, zu vergleichen zwei Objekte in der Liste. Also, in Ihrem Fall, können sagen, Sie haben zwei Elemente in der Liste wie dieseund wenn Sie möchten, zu Sortieren, indem das zweite element, dann Sie würde tun
Ersten geht es
(1, 3)
an die lambda-Funktion gibt das element mit dem index1
, die3
und für dieses Tupel während der Vergleich. Die gleiche Weise,2
verwendet werden, für die zweite Tupel.Dies sollte den trick tun
Während thefourtheye die Lösung richtig ist in dem strengen Sinne, dass es genau das ist, was Sie gefragt in den Titel. Es kann ja eigentlich nicht sein, was Sie wollen. Kann es besser sein, nehmen Sie es ein bisschen weiter, über die Sortierung, die von der Rückseite der Tupel statt.
Dies zwingt Sie, um eine Bestellung wie:
Anstatt das erste element der unsortierten wie:
Dem ist, was ich bekomme, wenn Sie verwenden:
Standardmäßig Python macht eine lexikographische Sortierung von Links nach rechts. Die Umkehrung der Tupel effektiv macht Python zu tun, die lexikographische Sortierreihenfolge von rechts nach Links.