In Python versuche ich, mit Lambda nach Datum zu sortieren. Ich kann meine Fehlermeldung nicht verstehen. Die Nachricht lautet:
<lambda>() takes exactly 1 argument (2 given)
Die Linie, die ich habe, ist
a = sorted(a, lambda x: x.modified, reverse=True)
Antworten:
Verwenden
Unter Python 2.x nimmt die
sorted
Funktion ihre Argumente in der folgenden Reihenfolge an:Ohne das
key=
wird die Funktion, die Sie übergeben, als einecmp
Funktion betrachtet, die zwei Argumente akzeptiert.quelle
lambda
anderen Parameter, da einecmp
Funktion 2?cmp
Eine Komparatorfunktion akzeptiert zwei Argumente. Wenn Sie nicht angeben, dass Sie a übergebenkey
, wird aus der Reihenfolge der Funktionsparameter angenommen, dass Sie einen Komparator übergeben. Ihr Lambda nimmt einen Parameter an, ist daher kein gültiger Komparator, und das sagt der Fehler.Es wird wie folgt gedruckt:
quelle
Python-Listen verfügen über zwei integrierte Möglichkeiten zum Sortieren von Daten:
Je nach Ihren Anforderungen können Sie zwischen diesen beiden Optionen wählen:
Wenn Sie die ursprüngliche Liste beibehalten möchten, können Sie die sortierte Funktion verwenden. Wenn Sie keine ursprüngliche Liste benötigen, können Sie die Sortierfunktion verwenden.
Bevor wir sortieren oder sortieren, müssen wir Lambda verstehen.
Ein Lambda ist eine anonyme Funktion und eine anonyme Funktion ist eine Funktion, die ohne Namen definiert ist. Dieser Beitrag scheint es ziemlich gut zu erklären.
https://www.programiz.com/python-programming/anonymous-function
Lambda-Funktionen eignen sich gut zum Inline-Aufruf, da sie nur einen Ausdruck haben, der ausgewertet und zurückgegeben wird. Die Syntax für ein Lambda lautet:
Lambda-Argumente: Ausdruck
Mal sehen, wie man die sortierte Funktion benutzt:
Ausgabe: [('Dave', 'B', 10), ('Jane', 'B', 12), ('John', 'A', 15)]
Hier sehen wir, dass die Liste student_tuples mit Tupeln nach Schlüsselparametern sortiert ist, vorausgesetzt, student [2].
quelle