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