Classificar lista de objetos em Python

Vaibhhav Khetarpal 10 outubro 2023
  1. Use o método list.sort() para classificar a lista de objetos em Python
  2. Use a função sorted() para ordenar a lista de objetos em Python
Classificar lista de objetos em Python

As listas Python não são homogêneas, o que as torna diferentes dos outros tipos de dados fornecidos em Python.

A indexação de uma lista começa com 0 como o primeiro índice e é feita sequencialmente. Todos os elementos da lista têm seu lugar definido, por isso a duplicação é permitida nas listas.

Este tutorial apresentará diferentes métodos para classificar a lista de objetos em Python.

Use o método list.sort() para classificar a lista de objetos em Python

O método list.sort() classifica todos os elementos da lista em ordem crescente ou decrescente.

Ele contém dois parâmetros opcionais, key e reverse. O parâmetro key, tal como o seu nome sugere, serve como chave para o processo de ordenação. O parâmetro reverse é usado para determinar a ordem de classificação. Se o valor de reverse for True, a classificação ocorre em ordem reversa / decrescente.

No entanto, a função funciona bem sem o uso dos parâmetros opcionais mencionados acima.

O código a seguir usa o método list.sort() para classificar a lista de objetos em 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)

Resultado:

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

Para produzir o valor do parâmetro key, podemos usar operator.attrgetter().

attrgetter() é importado do módulo operator e é utilizado para retornar um objeto chamável que busca o atributo de seu operando.

O código a seguir usa o método list.sort() e operator.attrgetter() para classificar a lista de objetos em 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)

Resultado:

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

Use a função sorted() para ordenar a lista de objetos em Python

Python fornece uma função integrada sorted() que pode servir como alternativa à função list.sort().

Enquanto list.sort() não retorna nenhum valor específico e faz mudanças na lista original, a função sorted() retorna a lista ordenada ao invés de fazer quaisquer modificações na lista original.

A função sorted() contém apenas reverse como um parâmetro opcional.

O código a seguir usa a função sorted() para ordenar a lista de objetos em 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)

Resultado:

[{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

Artigo relacionado - Python List