python: Wie sortiere ich eine komplexe Liste auf zwei verschiedene Schlüssel?

8

Ich habe eine komische Liste auf folgende Weise erstellt:

%Vor%

und ich möchte es zuerst nach der Nummer (desc) und dann, wenn die Nummer gleich ist, nach dem Namen (asc) sortieren. Das Ergebnis, das ich gerne hätte, ist:

%Vor%

Ich habe versucht, an eine Lambda-Funktion zu denken, die ich in der Sortiermethode verwenden kann, aber ich bin mir nicht sicher, ob ich das tun kann.

    
Giovanni Di Milia 20.10.2010, 16:00
quelle

4 Antworten

20

Sortierfunktionen in Python erlauben, eine Funktion als Sortierschlüssel zu übergeben:

%Vor%

Bearbeitungen: 1. Sortierreihenfolge 2. Vorführen von Kopien und Sortieren vor Ort

    
tback 20.10.2010, 16:04
quelle
0

Hier ist etwas, das ich aufgepeitscht habe (um die gleiche Art von Problem zu lösen). Ich habe es nur mit meinen neuesten Versionen von Python (OS X) überprüft. Die folgenden Importabschnitte sind die Sortierschlüssel (clunkily-named): sortKeyWithTwoListOrders und sortKeyWith2ndThen1stListValue

%Vor% %Vor%     
hEADcRASH 21.05.2012 16:21
quelle
0

Sie können die Liste zweimal sortieren, um das Ergebnis zu erhalten, kehren Sie einfach die Reihenfolge um:

%Vor%

Dann erhalten Sie die sortierte Liste wie erwartet.

    
Maelstrom 29.11.2016 07:06
quelle
-2

Es muss keine Lambda-Funktion sein, die Sie an die Methode sort übergeben. Sie können eine echte Funktion bereitstellen, da es sich um erstklassige Objekte in Python handelt.

%Vor%

Sollte gut funktionieren

    
Daniel DiPaolo 20.10.2010 16:04
quelle

Tags und Links