web-dev-qa-db-fra.com

Comment trier lambda dans Python

En Python, j'essaye de trier par date avec lambda. Je ne peux pas comprendre mon message d'erreur. Le message est:

<lambda>() takes exactly 1 argument (2 given)

La ligne que j'ai est

a = sorted(a, lambda x: x.modified, reverse=True)
138
Niklas Rosencrantz

Utilisation

a = sorted(a, key=lambda x: x.modified, reverse=True)
#             ^^^^

Sur Python 2.x, la fonction sorted prend ses arguments dans cet ordre:

sorted(iterable, cmp=None, key=None, reverse=False)

ainsi, sans le key=, la fonction que vous transmettez sera considérée comme une fonction cmp prenant 2 arguments.

269
kennytm
lst = [('candy','30','100'), ('Apple','10','200'), ('baby','20','300')]
lst.sort(key=lambda x:x[1])
print(lst)

Il sera imprimé comme suit:

[('Apple', '10', '200'), ('baby', '20', '300'), ('candy', '30', '100')]
6

Les listes Python ont deux méthodes intégrées pour trier les données:

sort() — A method that modifies the list in-place
sorted() — A built-in function that builds a new sorted list from an iterable

En fonction de vos besoins, vous pouvez choisir parmi ces deux:

si vous souhaitez conserver la liste d'origine, vous pouvez utiliser la fonction triée ou si vous n'avez pas besoin de la liste d'origine, vous pouvez utiliser la fonction de tri.

Avant de trier ou de trier, nous devons comprendre le lambda.

Un lambda est une fonction anonyme et une fonction anonyme est une fonction qui est définie sans nom, ce post semble l'expliquer assez bien.

https://www.programiz.com/python-programming/anonymous-function

Les fonctions Lambda sont pratiques pour appeler en ligne car elles ne possèdent qu'une seule expression évaluée et renvoyée. La syntaxe pour un lambda est la suivante:

arguments lambda: expression

voyons comment utiliser la fonction triée:

student_tuples = [('john', 'A', 15),('jane', 'B', 12),('dave', 'B', 10),]
sorted(student_tuples, key=lambda student: student[2]) 

sortie: [('dave', 'B', 10), ('Jane', 'B', 12), ('John', 'A', 15)]

Ici nous pouvons voir que la liste student_tuples ayant des tuples est triée sur la base du paramètre clé fourni, à savoir student [2].

1
Preeti Duhan