Wie sortiere ich eine Liste von Tupeln nach ihrem ersten Element?

7

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%     
Ericson Willians 05.04.2014, 03:58
quelle

3 Antworten

13

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

%Vor%

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

%Vor%

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.

    
thefourtheye 05.04.2014, 04:03
quelle
3

Das sollte den Trick machen

%Vor%     
inspectorG4dget 05.04.2014 04:01
quelle
2

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.

    
Nuclearman 05.04.2014 04:49
quelle

Tags und Links