2010-09-22 20 views
90

En Python, estoy tratando de ordenar por fecha con lambda. No puedo entender mi mensaje de error. El mensaje es:Cómo ordenar con lambda en Python

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

la línea que tengo es

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

add keywoard argumento key = lambda x: x.modified resolverá el problema – shahjapan

Respuesta

174

Uso

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

En Python 2.x, la función sorted toma sus argumentos en este orden:

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

sin el key=, la función que pase se considerará una función cmp que toma 2 argumentos.

+5

Tiene buenas posibilidades de aprender a apreciar el paso de parámetros de palabra clave de esta experiencia. –

+2

también es la respuesta correcta para list.sort (clave = clave) – Lars

+1

Esto es muy antiguo pero, ¿tiene alguna idea de por qué el código de error es engañoso? Tu respuesta parece posible. Python está suministrando 'lambda' con otro parámetro ya que una función' cmp' toma 2? – SuperBiasedMan