In questo articolo vedremo come ordinare una lista di oggetti in Python.
Possiamo sfruttare la funzione sorted()
e il suo parametro key
. Questo parametro ci permette di definire una funzione che servirà a specificare l'attributo dell'oggetto corrente da usare nella comparazione.
Supponiamo di avere questa lista di oggetti.
class User:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return repr((self.name, self.age))
users = [
User('John', 22),
User('James', 18),
User('Jay', 20)
]
Vogliamo usare l'attributo age
per la comparazione. Possiamo usare una funzione lambda
in sorted
nel modo seguente:
sorted_users = sorted(users, key=lambda user: user.age)
print(sorted_users)
Otterremo:
[('James', 18), ('Jay', 20), ('John', 22)]