2011-08-21 36 views
18

Bir nesneyi argüman olarak alan ve bana bir sayı veren bir işlev var. Bu numarayı listemi sıralamak için anahtar olarak kullanmak isterim.Python listesini işleve göre sırala

ben böyle bir şey yapacağını liste yineleme olsaydı:

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

Nasıl I kullanıcı sorted aynı sonucu almak ve bunu tavsiye edilir için? Bu benim ortaya çıktığım şey ama ne koyacağımı bilmiyorum '???' Sıralanmış için aynı

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

olası yinelenen http://stackoverflow.com/questions/3401123/need-help-with-sort -function-in-python) – agf

cevap

16
sort(my_list_of_objects, key=my_number_giving_function) 

, see the Python Sorting HOWTO

([python sıralama fonksiyonu ile yardıma ihtiyacım] arasında
+1

Hah, sanırım lambda kısmına ihtiyacım yok. Bunu düşünmemiştim. – GWW

+5

Eğer 'func' tam olarak bir argüman alırsa,' func'' lambda x: func (x) 'ile eşdeğerdir. Bu eta-redüksiyon olarak bilinir. –