Trier la liste des objets en Python

Vaibhhav Khetarpal 10 octobre 2023
  1. Utilisez la méthode list.sort() pour trier la liste des objets en Python
  2. Utilisez la fonction sorted() pour trier la liste des objets en Python
Trier la liste des objets en Python

Les listes Python ne sont pas homogènes, ce qui les rend différentes des autres types de données fournis en Python.

L’indexation d’une liste commence par 0 comme premier index et se fait de manière séquentielle. Tous les éléments de la liste ont leur place définie en raison de laquelle la duplication est autorisée dans les listes.

Ce tutoriel présentera différentes méthodes pour trier la liste des objets en Python.

Utilisez la méthode list.sort() pour trier la liste des objets en Python

La méthode list.sort() trie tous les éléments de la liste par ordre croissant ou décroissant.

Il contient deux paramètres optionnels, key et reverse. Le paramètre key, comme son nom l’indique, sert de clé pour le processus de tri. Le paramètre reverse permet de déterminer l’ordre de tri. Si la valeur de reverse est True, alors le tri s’effectue dans l’ordre inverse/décroissant.

Cependant, la fonction fonctionne très bien sans l’utilisation des paramètres facultatifs susmentionnés.

Le code suivant utilise la méthode list.sort() pour trier la liste des objets en 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)

Production:

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

Pour produire la valeur du paramètre key, nous pouvons utiliser operator.attrgetter().

attrgetter() est importé du module operator et est utilisé pour renvoyer un objet appelable qui récupère l’attribut de son opérande.

Le code suivant utilise la méthode list.sort() et operator.attrgetter() pour trier la liste des objets en 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)

Production:

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

Utilisez la fonction sorted() pour trier la liste des objets en Python

Python fournit une fonction sorted() intégrée qui peut servir d’alternative à la fonction list.sort().

Alors que list.sort() ne renvoie aucune valeur spécifique et modifie la liste d’origine, la fonction sorted() renvoie la liste triée plutôt que d’apporter des modifications à la liste d’origine.

La fonction sorted() ne contient que reverse comme paramètre facultatif.

Le code suivant utilise la fonction sorted() pour trier la liste des objets en 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)

Production:

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

Article connexe - Python List