Ordenar lista que tiene elementos clase

damufo damufo en gmail.com
Jue Jul 3 14:10:59 CEST 2008


Alexis Roda escribiu:
> En/na damufo ha escrit:
>> Hola:
>> No se si es así como se dice, lo explico.
>> Tengo una clase llamada Persona, persona a sú vez tiene atributos como 
>> edad, sexo...
>> La cuestión es que por otro lado tengo otra clase llamada Grupo que 
>> tiene atributos como, lugar, centro, y personas que es una lista en la 
>> que almaceno clases de tipo Persona
>>
>> class Persona()
>>    def __init__(nombre, edad, sexo):
>>        self.nombre = nombre
>>        self.edad = edad
>>        self.sexo = sexo
>>
>> persona1 = Persona("nombre1", "18", "M")
>> persona2 = Persona("nombre2", "19", "F")
> 
> Puedes utilizar el método sort() de las listas. Ten presente que este 
> método ordena la lista in situ, *no* devuelve una copia ordenada de la 
> lista.
> 
> def compara_edad_sexo_nombre(p1, p2) :
>     return cmp((p1.edad, p1.sexo, p1.nombre),
>                (p2.edad, p2.sexo, p2.nombre))
> 
> grupo1.personas.sort(cmp=compara_edad_sexo_nombre)
> 
> 
> Un par de observaciones:
> 
> Ten cuidado al poner las edades como valores alfanuméricos, "2" > "10" 
> mientras que 2 < 10.
> 
> No sé de que va tu programa, pero tiene la pinta de que una base de 
> datos relacional te facilitaría la vida.
> 
Gracias Alexis, era solo un ejemplo, efectivemente para edad mejor 
numerico. Creo que visto lo visto en lugar de almacenar los datos, haré 
una consulta a la base de datos para que me devuelva la información como 
quiero.
Esto es algo que aun no tengo muy claro, al usar clases tiendo a 
almacenar en memoria en lugar de la base de datos.

Saludos y gracias.

damufo
------------ 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