el movimiento en las versiones recientes de Python para pasar una función clave a sort()
del cmp anterior función es lo que hace más difícil para mí para realizar ordenaciones complejas en ciertos objetos.cómo escribir Python ordenar las funciones clave para descender los valores
Por ejemplo, quiero ordenar un conjunto de objetos del más nuevo al más antiguo, con un conjunto de campos de tie-breaker. Así que quiero las fechas en orden inverso, pero las cadenas en su orden natural. Con una función de comparación, puedo invertir la comparación del campo de fecha en comparación con los campos de cadena. Pero con una función clave, necesito encontrar alguna forma de invertir/invertir las fechas o las cuerdas.
Es fácil (aunque feo) hacer con los números, solo restarlos de algo, pero ¿tengo que encontrar un hack similar para las fechas (restarlas de otra fecha y comparar el timedeltas?) Y las cadenas (... No tengo idea de cómo invertiría su orden de una manera independiente de la configuración regional).
sé de la existencia de functools.cmp_to_key()
pero se describe como siendo "que se utiliza principalmente como una herramienta de transición para programas que se convierte en Python 3 donde funciones de comparación ya no son compatibles". Esto implica que debería poder hacer lo que quiero con el método clave, pero ¿cómo?
Pasando inversa = True sólo cambia cuál de las sub-claves tengo que encontrar una manera de invertir. Imagine (por alguna extraña razón) que quería ordenar por nombre ascendente y apellido descendiente, por ejemplo. Pasando reverse = True solo significa que tengo que encontrar una forma de invertir el nombre ahora, en lugar del apellido. – Kylotan
http://python3porting.com/preparing.html#keycmp-section – wim
No está claro cómo ayuda ese enlace. – Kylotan