A veces requerimos ordenar valores de una secuencia (list, set) en un orden diferente del "default", o definitivamente no hay ningún default definido. Tomemos por ejemplo una lista de objetos...
In [4]:
import random
class item(object):
def __init__(self):
self.x = random.randint(1, 1000)
mi_lista = []
for n in range(15):
mi_lista.append(item())
En el anterior código hemos creado una lista de 15 objetos item
, cada objeto item
tiene un valor x tomado aleatoriamente. Si recorremos dicha lista podremos ver que el orden es, pseudoaleatorio:
In [5]:
for elemento in mi_lista:
print elemento.x
Podemos ordenar los elementos de la lista por cualquier elemento arbitrario que desearamos. En este caso crearemos una lista nueva, en donde el orden estará dado por la propiedad x
de cada objeto agregado a la lista. Para ello podemos usar el parámetro key
:
In [7]:
lista_ordenada = sorted(mi_lista, key = lambda elemento: elemento.x)
for elemento in lista_ordenada:
print elemento.x
Por Espartaco Palma (@esparta)
Este obra está bajo Licencia Creative Commons Atribución 4.0 Internacional.