2011-08-21 22 views
18

Tengo una función que toma un objeto como argumento y me da un número. Deseo utilizar este número como la clave para ordenar mi lista.Ordenar la lista de Python por la función

Si tuviera que iterar sobre la lista me gustaría hacer algo como:

sorted_list = [] 
for object in my_list_of_objects: 
    i = my_number_giving_function(object) 
    sorted_list.insert(i, object) 

¿Cómo puedo sorted usuario para obtener el mismo resultado, y es conveniente? Esto es lo que se me ocurrió, pero no sé qué poner en el '???'

sorted_list = sorted(my_list_of_objects, key=my_number_giving_function(???)) 
+0

posible duplicado de [necesitar ayuda con función de clasificación en Python] (http://stackoverflow.com/questions/3401123/need-help-with-sort -function-in-python) – agf

Respuesta

16
sort(my_list_of_objects, key=my_number_giving_function) 

mismo para ordenada, see the Python Sorting HOWTO

+1

Ja, supongo que no necesito la parte lambda. No pensé eso a través de. – GWW

+5

si 'func' toma exactamente un argumento, luego' func' es equivalente a 'lambda x: func (x)'. Esto se conoce como eta-reducción. –

Cuestiones relacionadas