2010-09-22 14 views
90

In Python, sto cercando di ordinare per data con lambda. Non riesco a capire il mio messaggio di errore. Il messaggio è:Come ordinare con lambda in Python

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

La linea che ho è

a = sorted(a, lambda x: x.modified, reverse=True) 
+6

aggiungi argomento keywoard key = lambda x: x.modified risolverà il problema – shahjapan

risposta

174

Usa

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

su Python 2.x, la funzione sorted prende i suoi argomenti in questo ordine:

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

quindi senza key=, la funzione passata sarà considerata una funzione cmp che accetta 2 argomenti.

+5

Hai buone probabilità di imparare ad apprezzare il passaggio dei parametri delle parole chiave da questa esperienza. –

+2

anche la risposta giusta per list.sort (chiave = chiave) – Lars

+1

Questo è molto vecchio ma, hai qualche idea del perché il codice di errore è fuorviante? La tua risposta suona come possibile Python fornisce 'lambda' con un altro parametro dato che una funzione' cmp' richiede 2? – SuperBiasedMan