230 votes

Comment trier avec lambda

Essayer de trier par date avec lambda, je ne comprends pas à quel lambda mon message d'erreur fait référence. Le message est

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

Les 2 instructions sont

 a = A.proximity_fetch(A.all().filter("modified >", timeline).filter("published =", True).filter("modified <=", bookmark ).order("-modified") ,db.GeoPt(lat, lon),max_results=40, max_distance=m)
a = sorted(a, lambda x: x.modified, reverse=True)
 

404voto

KennyTM Points 232647

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 les key= , la fonction que vous transmettez sera considérée comme une fonction cmp qui prend 2 arguments.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X