Python: ordinare una lista di oggetti

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)]
Torna su