Sortieren eines mehrdimensionalen Liste durch eine variable Anzahl von Schlüsseln
Habe ich gelesen dieser Beitrag und ist noch nicht endete, für mich zu arbeiten.
Edit: die Funktionalität, die ich beschreibe, ist genau wie die Sortierfunktion in Excel... wenn das macht es klarer
Hier ist meine situation, ich habe eine tab-getrennte text-Dokument. Es gibt etwa 125.000 Zeilen und 6 Spalten pro Zeile (Spalten getrennt durch ein tab-Zeichen). Ich habe das Dokument geteilt werden soll in einem zwei-Dimensions-Liste.
Ich bin versucht, zu schreiben eine generische Funktion zum Sortieren von zwei-dimensionalen Listen. Grundsätzlich würde ich gerne eine Funktion haben wo kann ich das pass die große Liste, und der Schlüssel, der einer oder mehreren Spalten, ich möchte Sortieren der großen Liste durch. Natürlich möchte ich, dass der erste Schlüssel übergeben für die primäre Sortierung Punkt, dann den zweiten Schlüssel, etc.
Immer noch confuzzled?
Hier ist ein Beispiel was ich gerne tun würde.
Joel 18 Orange 1
Anna 17 Blue 2
Ryan 18 Green 3
Luke 16 Blue 1
Katy 13 Pink 5
Tyler 22 Blue 6
Bob 22 Blue 10
Garrett 24 Red 7
Ryan 18 Green 8
Leland 18 Yellow 9
Sagen, dass ich übergeben Sie diese Liste, um meine Magische Funktion, etwa so:
sortByColumn(bigList, 0)
Anna 17 Blue 2
Bob 22 Blue 10
Garrett 24 Red 7
Joel 18 Orange 1
Katy 13 Pink 5
Leland 18 Yellow 9
Luke 16 Blue 1
Ryan 18 Green 3
Ryan 18 Green 8
Tyler 22 Blue 6
und...
sortByColumn(bigList, 2, 3)
Luke 16 Blue 1
Anna 17 Blue 2
Tyler 22 Blue 6
Bob 22 Blue 10
Ryan 18 Green 3
Ryan 18 Green 8
Joel 18 Orange 1
Katy 13 Pink 5
Garrett 24 Red 7
Leland 18 Yellow 9
Irgendwelche Hinweise?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Sortieren von Spalten 2 und 3:
Die zentrale Idee hier (Wortspiel beabsichtigt), ist die Verwendung einer key-Funktion zurückgibt, die ein Tupel.
Unten die Funktion der Taste ist
lambda x: (x[idx] for idx in args)
x
eingestellt ist gleich ein element der aList -, eine Reihe von Daten. Es gibt ein Tupel von Werten, nicht nur auf einen einzigen Wert. Die Methode sort() sortiert nach dem ersten element der Liste, dann bricht die Beziehungen mit der zweiten, und so weiter. Sehen http://wiki.python.org/moin/HowTo/Sorting#SortingbykeysStellen Sie sicher, dass Sie konvertiert haben, die zahlen, Ganzzahlen, ansonsten werden Sie Sortieren alphabetisch statt numerisch
oder