2011-08-21 14 views
18

Ho una funzione che accetta un oggetto come argomento e mi fornisce un numero. Vorrei usare questo numero come chiave per ordinare la mia lista.Ordina elenco python per funzione

Se dovessi iterare l'elenco vorrei fare qualcosa di simile:

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

come posso utente sorted per ottenere lo stesso risultato, ed è consigliabile? Questo è quello che mi è venuto in mente ma non so cosa mettere nel '???'

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

possibile duplicato del [bisogno di aiuto con funzione di ordinamento in python] (http://stackoverflow.com/questions/3401123/need-help-with-sort -function-in-python) – agf

risposta

16
sort(my_list_of_objects, key=my_number_giving_function) 

stesso per ordinato, see the Python Sorting HOWTO

+1

Hah, credo di non aver bisogno della parte lambda. Non l'ho pensato. – GWW

+5

se 'func' richiede esattamente un argomento, quindi' func' è equivalente a 'lambda x: func (x)'. Questo è noto come eta-riduzione. –

Problemi correlati