Ordenar instancias comparando diversos atributos

Víctor vitojph en gmail.com
Vie Dic 21 13:36:21 CET 2007


¡Hola a todos!

Necesito ordenar una lista de instancias de la misma clase comparando
diversos atributos. Os simplifico el problema:

>>> class Persona(object):
...   def __init__(self, edad=None, altura=None, peso=None):
...     self.edad = edad
...     self.altura = altura
...     self.peso = peso
...
>>> personas = []
>>> personas.append( Persona(edad=1, altura=50, peso=4500) )
>>> personas.append( Persona(edad=10, altura=135, peso=45000) )
>>> personas.append( Persona(edad=10, altura=136, peso=42000) )
>>> personas.append( Persona(edad=10, altura=136, peso=46000) )

En primer lugar, me gustaría ordenar a la gente por edad. En caso de
que la edad coincida, las ordeno por altura y en último caso, por
peso. ¿Cómo puedo implementarlo? Hasta el momento, sólo sé como
ordenar comparando la edad.

>>> def compara(p1, p2):
...   if p1.edad < p2.edad: return 1
...   elif p1.edad == p2.edad: return 0
...   else: return -1

¿Dónde defino el resto de comparaciones? ¿En la misma función o en
funciones separadas? Gracias de antemano y un saludo.


-- 
Víctor Peinado | NLP & IR Group - UNED | http://nlp.uned.es/~victor
Tel (+34) 91 398 8106
Skype/GTalk: vitojph
------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes


Más información sobre la lista de distribución Python-es