Cuando pasa un lambda
to sort
, debe devolver un número entero, no un booleano. Entonces, su código debería leerse de la siguiente manera:
xs.sort(lambda x,y: cmp(len(x), len(y)))
Tenga en cuenta que cmp es una función incorporada que cmp(x, y)
devuelve -1 si x
es menor que y
, 0 si x
es igual a y
y 1 si x
es mayor que y
.
Por supuesto, en su lugar puede utilizar el key
parámetro:
xs.sort(key=lambda s: len(s))
Esto le dice al sort
método que ordene en función de lo que devuelva la función clave.
EDITAR: Gracias a balpha y Ruslan a continuación por señalar que puede pasar len
directamente como parámetro clave a la función, eliminando así la necesidad de lambda
:
xs.sort(key=len)
Y como Ruslan señala a continuación, también puede usar la función ordenada incorporada en lugar del list.sort
método, que crea una nueva lista en lugar de ordenar la existente en el lugar:
print(sorted(xs, key=len))
lambda
; solo usekey = len