Comment trier presque n’importe quel type de liste en Python
Le tri d'une liste en Python vous permet d'organiser ses éléments par ordre croissant ou décroissant.
Au lieu d'écrire de longs blocs de code pour ce faire, Python a une méthode intégrée qui vous permet de trier les éléments dans n'importe quelle liste ou tableau. Nous expliquerons comment faire cela dans cet article.
Comment trier une liste en Python
Vous pouvez trier les éléments d'une liste ou d'un tableau à l'aide de la méthode Python sort () .
La méthode sort () en Python accepte deux arguments optionnels et la syntaxe ressemble à ceci:
list.sort(key = function, reverse = True/False)
Par défaut, la méthode sort () organise les éléments d'une liste dans l'ordre croissant:
myList = ["C", "D", "B", "A", "F"]
myList.sort()
print(myList)
Output: ['A', 'B', 'C', 'D', 'F']
Vous pouvez utiliser l'argument inverse pour afficher la liste dans l'ordre décroissant:
myList = ["C", "D", "B", "A", "F"]
myList.sort(reverse = True)
print(myList)
Output: ['F', 'D', 'C', 'B', 'A']
Vous pouvez également organiser les éléments dans une liste en fonction de la longueur de chaque chaîne.
Pour ce faire, créez une fonction et passez-la dans la méthode sort () en utilisant l'argument clé optionnel:
myList = ["MUO", "Python", "JavaScript", "Sort", "Sortlists"]
def sortLength(item):
return len(item)
myList.sort(reverse = True, key = sortLength)
print(myList)
Output: ['JavaScript', 'Sortlists', 'Python', 'Sort', 'MUO']
Comment trier une liste de dictionnaires en Python
Vous pouvez également utiliser la méthode sort () pour trier une liste de dictionnaires.
Trions les tâches dans le dictionnaire ci-dessous par leur heure:
myArray = [
{"Task": "Wash", "Time": 12.00},
{"Task":"Football", "Time": 24.00},
{"Task":"Sort", "Time": 17.00},
{"Task":"Code", "Time": 15.00}
]
def sortByTime(item):
return item["Time"]
myArray.sort(key = sortByTime)
print(myArray)
Étant donné que les valeurs de temps sont des entiers, le bloc de code ci-dessus réorganise le tableau en fonction du temps de la tâche.
En plus de trier le tableau ci-dessus par heure, vous pouvez également l'organiser par ordre alphabétique à l'aide des tâches, qui sont des chaînes.
Pour trier par chaîne dans le tableau d'exemple, il vous suffit de changer Time dans le crochet carré en Tâche :
myArray = [
{"Task": "Wash", "Time": 12.00},
{"Task":"Football", "Time": 24.00},
{"Task":"Sort", "Time": 17.00},
{"Task":"Code", "Time": 15.00}
]
def sortByTime(item):
return item["Task"]
myArray.sort(key = sortByTime)
print(myArray)
Vous pouvez également trier les tâches dans l'ordre inverse en définissant reverse sur true:
myArray.sort(key = sortByTime, reverse = True)
Vous pouvez également utiliser une fonction lambda avec sort () pour un code plus propre:
myArray.sort(key = lambda getTime: getTime["Time"])
print(myArray)
Comment trier une liste Python imbriquée
Vous pouvez trier une liste imbriquée de tuples en fonction de l'index de chaque élément imbriqué dans cette liste.
Par exemple, le code ci-dessous utilise le troisième élément de chaque tuple pour trier la liste par ordre croissant:
Alist = [(3, 19, 20), (2, 6, 0), (1, 8, 15), (7, 9, 3), (10, 19, 4)]
def sortByThirdIndex(a):
return a[2]
Alist.sort(key = sortByThirdIndex)
print(Alist)
Output: [(2, 6, 0), (7, 9, 3), (10, 19, 4), (1, 8, 15), (3, 19, 20)]
Dans la sortie ci-dessus, le troisième élément de chaque tuple augmente de zéro à vingt consécutivement.
Notez que cela ne fonctionne pas avec un ensemble Python car vous ne pouvez pas l'indexer. De plus, chaque imbrication de la liste doit appartenir au même type de données.
Cependant, pour organiser la sortie dans l'ordre décroissant:
Alist.sort(key = getIndex, reverse = True)
print(Alist)
Output: [(3, 19, 20), (1, 8, 15), (10, 19, 4), (7, 9, 3), (2, 6, 0)]
Voyons à quoi cela ressemble également avec une fonction lambda :
Alist = [(3, 19, 20), (2, 6, 0), (1, 8, 15), (7, 9, 3), (10, 19, 4)]
newList = sorted(Alist, key = lambda a: a[2])
print(newList)
Output: [(2, 6, 0), (7, 9, 3), (10, 19, 4), (1, 8, 15), (3, 19, 20)]
Comment trier une liste à l'aide de la méthode Sorted ()
Vous pouvez également utiliser la méthode sorted () .
Bien qu'elle fonctionne de manière similaire à la méthode sort () , elle crée une nouvelle liste triée sans modifier l'original. Sa disposition de syntaxe est également légèrement différente.
La syntaxe de la méthode sorted () ressemble généralement à ceci:
sorted(list, key = function, reverse = True/False)
Donc, pour trier une liste en utilisant la méthode sorted () , vous devez créer une nouvelle variable pour la liste triée:
Alist = [(3, 19, 20), (2, 6, 0), (1, 8, 15), (7, 9, 3), (10, 19, 4)]
def getIndex(a):
return a[2]
newList = sorted(Alist, key = getIndex)
print(newList)
Output: [(2, 6, 0), (7, 9, 3), (10, 19, 4), (1, 8, 15), (3, 19, 20)]
La méthode sorted () accepte également une fonction lambda comme clé:
Alist = [(3, 19, 20), (2, 6, 0), (1, 8, 15), (7, 9, 3), (10, 19, 4)]
newList = sorted(Alist, key = lambda a: a[2])
print(newList)
Output: [(2, 6, 0), (7, 9, 3), (10, 19, 4), (1, 8, 15), (3, 19, 20)]
Où pouvez-vous appliquer le tri de liste?
Une solide maîtrise de la méthode de tri Python est nécessaire pour une programmation efficace. Il vous permet de contrôler la manière dont une liste ou un tableau apparaît et vous pouvez toujours l'appliquer dans des projets réels. Par exemple, le tri d'une liste Python peut être utile lors de la réorganisation des données d'une API ou d'une base de données, ce qui a donc plus de sens pour un utilisateur final.