Ordenar instancias comparando diversos atributos
Arnau Sanchez
pyarnau en gmail.com
Vie Dic 21 16:03:00 CET 2007
Del correo anterior se me olvidó comentar:
> if p1.edad < p2.edad: return 1
> elif p1.edad == p2.edad: return 0
> else: return -1
Ya existe una función builtin que hace eso (salvo signo): "cmp"
Víctor escribió:
>> import operator
>> sorted(lista_de_personas, key=operator.attrgetter("edad"))
>>
>> sort/sorted, según te interese in-place o no.
>
> Ok, pero ¿cómo aplico los tres criterios de ordenación? ¿De forma
> secuencial, uno detrás de otro o especificando en algún sitio que sólo
> cuando un criterio coincide (la edad por ejemplo), he de ordenador
> según la altura?
Es sencillo, sólo tienes que adaptar la clave (key) a tu gusto, de forma
que devuelva una secuencia (tupla o lista):
key = lambda persona: (persona.edad, persona.altura, persona.peso)
sorted(una_lista_de_personas, key=key)
arnau
------------ 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