Ich habe eine Liste von Tupeln:
%Vor%self.gridKeys:
%Vor%Nach dem Sortieren:
%Vor%self.gridKeys:
%Vor%Das erste Element jedes Tupels ist das "x" und das zweite das "y". Ich verschiebe Objekte in einer Liste durch Iteration und benutze diese Schlüssel (Also, wenn ich etwas auf der x-Achse verschieben will, muss ich durch die ganze Spalte gehen, und das könnte ein schreckliches Problem verursachen, das ich nicht bin in der Lage zu lösen).
Wie kann ich die Tupel auf diese Weise sortieren?:
%Vor% Sie können den Parameter key
der Funktion sort
verwenden, um die Tupel zu sortieren. Die Funktion von key
-Parameter besteht darin, einen Wert zu ermitteln, der für den Vergleich zweier Objekte verwendet werden muss. Wenn Sie also in sort
nur das erste Element im Tupel verwenden möchten, können Sie so etwas tun
Wenn Sie nur das zweite Element im Tupel verwenden wollen, dann
%Vor% sort
function übergibt jedes Element in der Liste an die Lambda-Funktion, die Sie als Parameter an key
übergeben, und verwendet den zurückgegebenen Wert, um zwei Objekte in der Liste zu vergleichen. Also, in Ihrem Fall, sagen wir, Sie haben zwei Elemente in der Liste wie folgt
und wenn Sie nach dem zweiten Element sortieren wollen, dann würden Sie
machen %Vor% Zuerst übergibt es (1, 3)
an die Lambda-Funktion, die das Element am Index 1
zurückgibt, was 3
ist und dieses Tupel während des Vergleichs darstellt. Genauso wird 2
für das zweite Tupel verwendet.
Die Lösung von fourheye ist im strengen Sinne korrekt, genau das, wonach Sie im Titel gefragt haben. Vielleicht ist es nicht das, was du willst. Es kann besser sein, es ein bisschen weiter zu nehmen, indem man stattdessen nach der Umkehrung des Tupels sortiert.
%Vor%Dies zwingt Sie zu einer Bestellung wie:
%Vor%Anstatt das erste Element ungeordnet zu haben wie:
%Vor%Was ich bei der Benutzung bekomme:
%Vor%Standardmäßig verwendet Python eine lexikografische Sortierung von links nach rechts. Wenn Sie das Tupel umkehren, wird Python die lexikografische Sortierung von rechts nach links ausführen.