Tiene una buena oportunidad de aprender a apreciar el parámetro de palabra clave que pasa de esta experiencia.
Tony Veijalainen
1
Esto es muy antiguo pero, ¿tienes alguna idea de por qué el código de error es engañoso? ¿Su respuesta parece posible que Python esté suministrando lambdaotro parámetro ya que una cmpfunción toma 2?
SuperBiasedMan
@SuperBiasedMan el error no es engañoso. cmp, una función de comparación toma dos argumentos. Si no especifica que está pasando un a key, se asume por el orden de los parámetros de función que está pasando un comparador. Su lambda toma un parámetro, por lo tanto, no es un comparador válido y eso es lo que dice el error.
Respuestas:
Utilizar
En Python 2.x, la
sorted
función toma sus argumentos en este orden:así que sin la
key=
función que pases se considerará unacmp
función que toma 2 argumentos.fuente
lambda
otro parámetro ya que unacmp
función toma 2?cmp
, una función de comparación toma dos argumentos. Si no especifica que está pasando un akey
, se asume por el orden de los parámetros de función que está pasando un comparador. Su lambda toma un parámetro, por lo tanto, no es un comparador válido y eso es lo que dice el error.Se imprimirá de la siguiente manera:
fuente
Las listas de Python tienen dos formas integradas de ordenar datos:
Según sus requisitos, puede elegir entre estos dos:
si desea mantener la lista original, puede usar la función ordenada o si no necesita la lista original, puede usar la función ordenar.
Antes de continuar ordenado o ordenado, necesitamos entender lambda.
Una lambda es una función anónima y una función anónima es una función que se define sin nombre, esta publicación parece explicarlo muy bien.
https://www.programiz.com/python-programming/anonymous-function
Las funciones Lambda son buenas para llamar en línea porque solo tienen una expresión que se evalúa y devuelve. La sintaxis de una lambda es:
argumentos lambda: expresión
veamos cómo usar la función ordenada:
salida: [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
Aquí podemos ver que la lista student_tuples que tiene tuplas está ordenada según el parámetro clave siempre que sea student [2].
fuente