Ordina elenco di oggetti in Python

Vaibhhav Khetarpal 30 gennaio 2023
  1. Usa il metodo list.sort() per ordinare la lista di oggetti in Python
  2. Usa la funzione sorted() per ordinare la lista di oggetti in Python
Ordina elenco di oggetti in Python

Gli elenchi Python non sono omogenei, il che li rende diversi dagli altri tipi di dati forniti in Python.

L’indicizzazione di un elenco inizia con 0 come primo indice e viene eseguita in modo sequenziale. Tutti gli elementi della lista hanno il loro posto definito a causa della quale è consentita la duplicazione nelle liste.

Questo tutorial introdurrà diversi metodi per ordinare la lista di oggetti in Python.

Usa il metodo list.sort() per ordinare la lista di oggetti in Python

Il metodo list.sort() ordina tutti gli elementi della lista in ordine crescente o decrescente.

Contiene due parametri opzionali, key e reverse. Il parametro key, proprio come suggerisce il nome, funge da chiave per il processo di smistamento. Il parametro reverse viene utilizzato per determinare l’ordinamento. Se il valore di reverse è True, l’ordinamento avviene in ordine inverso/decrescente.

Tuttavia, la funzione funziona bene senza l’uso dei suddetti parametri opzionali.

Il codice seguente usa il metodo list.sort() per ordinare la lista di oggetti in Python.

class BankEMP:
    def __init__(self, name, dept, age):
        self.name = name
        self.dept = dept
        self.age = age

    def __repr__(self):
        return "{" + self.name + ", " + self.dept + ", " + str(self.age) + "}"


if __name__ == "__main__":

    emps = [
        BankEMP("Elijah", "IT", 20),
        BankEMP("Nik", "Banking", 21),
        BankEMP("Lucien", "Finance", 19),
    ]
    # sort list by `name` in the natural order
    emps.sort(key=lambda x: x.name)
    print(emps)

    # sort list by `name` in reverse order
    emps.sort(key=lambda x: x.name, reverse=True)
    print(emps)

Produzione:

[{Elijah, IT, 20}, {Lucien, Finance, 19}, {Nik, Banking, 21}]
[{Nik, Banking, 21}, {Lucien, Finance, 19}, {Elijah, IT, 20}]

Per produrre il valore per il parametro key, possiamo usare operator.attrgetter().

attrgetter() è importato dal modulo operator ed è utilizzato per restituire un oggetto richiamabile che recupera l’attributo dal suo operando.

Il codice seguente utilizza il metodo list.sort() e operator.attrgetter() per ordinare la lista di oggetti in Python.

from operator import attrgetter


class BankEMP:
    def __init__(self, name, dept, age):
        self.name = name
        self.dept = dept
        self.age = age

    def __repr__(self):
        return "{" + self.name + ", " + self.dept + ", " + str(self.age) + "}"


if __name__ == "__main__":

    emps = [
        BankEMP("Elijah", "IT", 20),
        BankEMP("Nik", "Banking", 21),
        BankEMP("Lucien", "Finance", 19),
    ]
    # sort list by name in the natural order using 'attrgetter()'
    emps.sort(key=attrgetter("name"))

    print(emps)

Produzione:

[{Elijah, IT, 20}, {Lucien, Finance, 19}, {Nik, Banking, 21}]

Usa la funzione sorted() per ordinare la lista di oggetti in Python

Python fornisce una funzione sorted() incorporata che può servire come alternativa alla funzione list.sort().

Mentre list.sort() non restituisce alcun valore specifico e apporta modifiche all’elenco originale, la funzione sorted() restituisce la lista ordinato invece di apportare modifiche all’elenco originale.

La funzione sorted() contiene solo reverse come parametro opzionale.

Il codice seguente usa la funzione sorted() per ordinare la lista di oggetti in Python.

class BankEMP:
    def __init__(self, name, dept, age):
        self.name = name
        self.dept = dept
        self.age = age

    def __repr__(self):
        return "{" + self.name + ", " + self.dept + ", " + str(self.age) + "}"


if __name__ == "__main__":

    emps = [
        BankEMP("Elijah", "IT", 20),
        BankEMP("Nik", "Banking", 21),
        BankEMP("Lucien", "Finance", 19),
    ]

    # sort list in natural order of name using sorted() function
    sort1 = sorted(emps, key=lambda x: x.name)
    print(sort1)

Produzione:

[{Elijah, IT, 20}, {Lucien, Finance, 19}, {Nik, Banking, 21}]
Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn

Articolo correlato - Python List