2010-02-23 6 views

Répondre

6
from operator import attrgetter 
sorted(item_list, key=attrgetter('fitness')) 

item_list peut être n'importe quel itérable. Voici un exemple

>>> class C(object): 
...  def __init__(self, fitness): 
...   self.fitness=fitness 
...  def __repr__(self): 
...   return "fitness: %s"%self.fitness 
... 
>>> 
>>> from operator import attrgetter 
>>> L=[C(10),C(4),C(1),C(99)] 
>>> sorted(L, key=attrgetter('fitness')) 
[fitness: 1, fitness: 4, fitness: 10, fitness: 99] 
>>> S=set(L) 
>>> sorted(S, key=attrgetter('fitness')) 
[fitness: 1, fitness: 4, fitness: 10, fitness: 99] 
+0

Si c'est self.fitness, est-ce que j'utiliser key = attrgetter ('self.fitness')? – Chris

+0

Non, attrgetter s'occupe du déréférencement de soi. BTW, 'trié (item_list)' renvoie une nouvelle liste mais laisse item_list inchangé. Au lieu de cela, vous pouvez faire 'item_list.sort()' qui va trier item_list en place, retournant None. – PaulMcG

+0

Non, voir les exemples que j'ai ajoutés à ma réponse –

Questions connexes