Classificar lista de objetos em Python
-
Use o método
list.sort()
para classificar a lista de objetos em Python -
Use a função
sorted()
para ordenar a 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 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