Python sort () erstes Element der Liste

7

Ich habe eine Liste, die nicht bestimmte Menge an Elementen enthält, aber jedes erste Element der geschachtelten Liste ist ein Bezeichner, ich möchte diesen Bezeichner verwenden, um die Liste in der Reihenfolge

zu sortieren %Vor%

Nach seiner Sortierung

%Vor%

Ich benutze Python 3.3.3

    
DaveDave 11.01.2014, 21:48
quelle

6 Antworten

16

Python sortiert automatisch Listen von Listen nach dem ersten Element. Zum Beispiel:

%Vor%     
Dan 11.01.2014 22:44
quelle
5

Sie möchten .sort() oder sorted :

verwenden %Vor%

Beachten Sie auch, dass Ihre Liste Kommas zwischen ihren Elementen benötigt. Hier ist das Ergebnis für sorted :

%Vor%

Wie Sie sehen, sortiert das letzte Beispiel die Listen ohne ein Schlüsselargument. Das vorherige Beispiel kann auch; aber Sie erwähnen, dass nur das erste Element ein eindeutiger Bezeichner ist, also gibt es keine Möglichkeit zu sagen, was das sekundäre Kriterium sein könnte, um die Liste über das erste Element hinaus zu sortieren.

    
πόδας ὠκύς 11.01.2014 21:51
quelle
3

Im Wesentlichen das Gleiche wie die anderen, verwendet aber operator.itemgetter (),

%Vor%     
wwii 11.01.2014 22:07
quelle
1

lists.sort(key = lambda x: x[0]) Stellen Sie sicher, dass Sie Kommas zwischen jede Liste in der größeren Liste setzen.

    
qwr 11.01.2014 21:56
quelle
0

Benutze dies

%Vor%

UPDATE Es funktioniert für 2.7 aber nicht für Python 3.3

    
Daniel Grankin 11.01.2014 21:53
quelle
0

Sie sollten den eingebauten Listenkonstruktor list nicht überschreiben und stattdessen einen anderen Namen verwenden:

%Vor%

Um die Liste an Ort und Stelle zu sortieren, verwenden Sie die Methode list.sort :

%Vor%

Die integrierte Funktion, sorted , gibt eine neue Liste zurück, was Sie anscheinend nicht tun wollten. Es gibt eine neue Liste zurück, die, wenn Sie die alte Liste nicht mehr benötigen, Speicherplatz im Speicher verschwenden würde.

Python sortiert automatisch das erste Element. Es sortiert dann automatisch nach dem zweiten, dritten und so weiter. Die Verwendung von Lambda, wie von anderen vorgeschlagen, würde bedeuten, dass Sie nur nach dem ersten Element sortieren würden und die folgenden Elemente ignoriert würden.

%Vor%

Aus diesem Grund wird die Sortierung als stabile Sortierung

beschrieben %Vor%     
Aaron Hall 11.01.2014 23:09
quelle

Tags und Links