So sortieren Sie fast alle Arten von Listen in Python
Durch Sortieren einer Liste in Python können Sie die Elemente in aufsteigender oder absteigender Reihenfolge anordnen.
Anstatt dafür lange Codeblöcke zu schreiben, verfügt Python über eine integrierte Methode, mit der Sie die Elemente in einer beliebigen Liste oder einem beliebigen Array sortieren können. Wir werden in diesem Beitrag erklären, wie das geht.
So sortieren Sie eine Liste in Python
Sie können die Elemente in einer Liste oder einem Array mit der Python-Methode sort () sortieren .
Die sort () -Methode in Python akzeptiert zwei optionale Argumente und die Syntax sieht folgendermaßen aus:
list.sort(key = function, reverse = True/False)
Standardmäßig ordnet die sort () -Methode die Elemente einer Liste in aufsteigender Reihenfolge an:
myList = ["C", "D", "B", "A", "F"]
myList.sort()
print(myList)
Output: ['A', 'B', 'C', 'D', 'F']
Mit dem umgekehrten Argument können Sie die Liste in absteigender Reihenfolge anzeigen:
myList = ["C", "D", "B", "A", "F"]
myList.sort(reverse = True)
print(myList)
Output: ['F', 'D', 'C', 'B', 'A']
Sie können die Elemente in einer Liste auch nach der Länge jeder Zeichenfolge anordnen.
Erstellen Sie dazu eine Funktion und übergeben Sie sie mit dem optionalen Schlüsselargument an die sort () -Methode:
myList = ["MUO", "Python", "JavaScript", "Sort", "Sortlists"]
def sortLength(item):
return len(item)
myList.sort(reverse = True, key = sortLength)
print(myList)
Output: ['JavaScript', 'Sortlists', 'Python', 'Sort', 'MUO']
So sortieren Sie eine Liste von Wörterbüchern in Python
Mit der Methode sort () können Sie auch eine Liste von Wörterbüchern sortieren.
Sortieren wir die Aufgaben im folgenden Wörterbuch nach ihrer Zeit:
myArray = [
{"Task": "Wash", "Time": 12.00},
{"Task":"Football", "Time": 24.00},
{"Task":"Sort", "Time": 17.00},
{"Task":"Code", "Time": 15.00}
]
def sortByTime(item):
return item["Time"]
myArray.sort(key = sortByTime)
print(myArray)
Da die Zeitwerte Ganzzahlen sind, ordnet der obige Codeblock das Array basierend auf der Taskzeit neu an.
Sie können das obige Array nicht nur nach Zeit sortieren, sondern es auch alphabetisch anhand der Aufgaben anordnen, bei denen es sich um Zeichenfolgen handelt.
Um im Beispielarray nach Zeichenfolgen zu sortieren, müssen Sie nur die Zeit in der eckigen Klammer in Aufgabe ändern:
myArray = [
{"Task": "Wash", "Time": 12.00},
{"Task":"Football", "Time": 24.00},
{"Task":"Sort", "Time": 17.00},
{"Task":"Code", "Time": 15.00}
]
def sortByTime(item):
return item["Task"]
myArray.sort(key = sortByTime)
print(myArray)
Sie können die Aufgaben auch in umgekehrter Reihenfolge sortieren, indem Sie umgekehrt auf true setzen:
myArray.sort(key = sortByTime, reverse = True)
Sie können auch eine Lambda-Funktion mit sort () für saubereren Code verwenden:
myArray.sort(key = lambda getTime: getTime["Time"])
print(myArray)
So sortieren Sie eine verschachtelte Python-Liste
Sie können eine verschachtelte Liste von Tupeln nach dem Index jedes verschachtelten Elements in dieser Liste sortieren.
Im folgenden Code wird beispielsweise das dritte Element in jedem Tupel verwendet, um die Liste in aufsteigender Reihenfolge zu sortieren:
Alist = [(3, 19, 20), (2, 6, 0), (1, 8, 15), (7, 9, 3), (10, 19, 4)]
def sortByThirdIndex(a):
return a[2]
Alist.sort(key = sortByThirdIndex)
print(Alist)
Output: [(2, 6, 0), (7, 9, 3), (10, 19, 4), (1, 8, 15), (3, 19, 20)]
In der obigen Ausgabe erhöht sich das dritte Element in jedem Tupel nacheinander von null auf zwanzig.
Beachten Sie, dass dies mit einem Python-Set nicht funktioniert, da Sie es nicht indizieren können. Darüber hinaus muss jedes Nest in der Liste zum selben Datentyp gehören.
So ordnen Sie die Ausgabe jedoch in absteigender Reihenfolge an:
Alist.sort(key = getIndex, reverse = True)
print(Alist)
Output: [(3, 19, 20), (1, 8, 15), (10, 19, 4), (7, 9, 3), (2, 6, 0)]
Mal sehen, wie das auch mit einer Lambda- Funktion aussieht:
Alist = [(3, 19, 20), (2, 6, 0), (1, 8, 15), (7, 9, 3), (10, 19, 4)]
newList = sorted(Alist, key = lambda a: a[2])
print(newList)
Output: [(2, 6, 0), (7, 9, 3), (10, 19, 4), (1, 8, 15), (3, 19, 20)]
So sortieren Sie eine Liste mit der Sorted () -Methode
Alternativ können Sie die sorted () -Methode verwenden.
Obwohl es ähnlich wie die sort () -Methode funktioniert, wird eine neue sortierte Liste erstellt, ohne das Original zu ändern. Das Syntaxlayout unterscheidet sich ebenfalls geringfügig.
Die Syntax für die sortierte () Methode sieht im Allgemeinen folgendermaßen aus:
sorted(list, key = function, reverse = True/False)
Um eine Liste mit der sorted () -Methode zu sortieren, müssen Sie eine neue Variable für die sortierte Liste erstellen:
Alist = [(3, 19, 20), (2, 6, 0), (1, 8, 15), (7, 9, 3), (10, 19, 4)]
def getIndex(a):
return a[2]
newList = sorted(Alist, key = getIndex)
print(newList)
Output: [(2, 6, 0), (7, 9, 3), (10, 19, 4), (1, 8, 15), (3, 19, 20)]
Die sortierte () Methode akzeptiert auch eine Lambda- Funktion als Schlüssel:
Alist = [(3, 19, 20), (2, 6, 0), (1, 8, 15), (7, 9, 3), (10, 19, 4)]
newList = sorted(Alist, key = lambda a: a[2])
print(newList)
Output: [(2, 6, 0), (7, 9, 3), (10, 19, 4), (1, 8, 15), (3, 19, 20)]
Wo können Sie die Listensortierung anwenden?
Für eine effiziente Programmierung ist ein solides Verständnis der Python-Sortiermethode erforderlich. Sie können damit steuern, wie eine Liste oder ein Array durchläuft, und Sie können sie jederzeit in realen Projekten anwenden. Das Sortieren einer Python-Liste kann beispielsweise nützlich sein, wenn Sie Daten aus einer API oder einer Datenbank neu anordnen, sodass dies für einen Endbenutzer sinnvoller ist.