Come ordinare una lista di dizionari in Python

In Python, una lista contenente dizionari può essere ordinata utilizzando la funzione sorted() o il metodo sort(). Questi metodi permettono di specificare una chiave personalizzata per determinare l'ordinamento degli elementi.

Utilizzo di sorted()

La funzione sorted() restituisce una nuova lista ordinata senza modificare l'originale. È utile quando si desidera mantenere intatta la lista di partenza.

lista = [
    {"nome": "Mario", "età": 25},
    {"nome": "Anna", "età": 22},
    {"nome": "Luca", "età": 30}
]

lista_ordinata = sorted(lista, key=lambda x: x["età"])
print(lista_ordinata)

In questo esempio, la lista viene ordinata in base al valore della chiave età.

Utilizzo di sort()

Il metodo sort() ordina la lista in-place, modificando l'oggetto originale.

lista.sort(key=lambda x: x["età"])
print(lista)

Il risultato sarà lo stesso di sorted(), ma la lista originale verrà modificata.

Ordinamento decrescente

Per ordinare in ordine decrescente, basta aggiungere il parametro reverse=True:

lista_ordinata_dec = sorted(lista, key=lambda x: x["età"], reverse=True)
print(lista_ordinata_dec)

Ordinamento per più chiavi

Se si vuole ordinare per più criteri, è possibile usare una tupla come chiave:

lista_ordinata = sorted(lista, key=lambda x: (x["età"], x["nome"]))
print(lista_ordinata)

In questo caso, i dati vengono ordinati prima per età e poi, in caso di parità, per nome.

Conclusione

Python fornisce strumenti semplici ed efficaci per ordinare liste di dizionari. A seconda delle necessità, si può scegliere tra sorted(), per mantenere l'originale inalterato, o sort(), per ordinare direttamente la lista.

Torna su