L'un des grands avantages de l'utilisation de Python est sa simplicité. Il est facile de travailler avec car sa bibliothèque standard possède de nombreuses fonctions utiles. L'une de ces fonctions est la fonction triée.
Cette fonction est utilisée pour trier les itérables dans un certain ordre. Sans une telle fonction, il faut écrire du code implémentant une algorithme de tri comme le tri à bulles ou le tri par insertion. C'est souvent difficile, mais Python fournit un moyen plus simple, que nous aborderons dans cet article.
Introduction to the Sorted Function
La fonction triée est une fonction qui trie les itérables en Python. Un itérable est une valeur sur laquelle vous pouvez effectuer une boucle. Les exemples d'itérables incluent les chaînes, les listes, les tuples et les ensembles. Ces itérables sont souvent non ordonnés et le tri place leurs valeurs dans un ordre spécifié. L'ordre des valeurs est utile car :
- La recherche avec des valeurs est plus rapide et plus efficace en utilisant des algorithmes tels que la recherche binaire. Cependant, la recherche binaire nécessite que les valeurs soient triées en premier.
- Pour afficher des valeurs. Parfois, les utilisateurs souhaitent afficher les informations triées, par exemple, le prix le plus bas en premier ou le message le plus récent en premier. Cela nécessiterait la mise en œuvre d'un moyen de trier une liste de valeurs.
- Lors de l'exécution d'une analyse statistique, par exemple, la recherche de la valeur la plus fréquente dans un ensemble. Il est plus facile de le faire lorsque les valeurs sont triées dans l'ordre.
Sorted Function Usage Guide
Comme mentionné précédemment, la fonction triée fonctionne avec tous les itérables. À son tour, il renvoie une liste qui a été triée. Ceci est important à noter - alors que l'entrée peut être n'importe quel itérable, la valeur de retour doit toujours être une liste.

Syntax of Sorted Function
La signature de fonction de la fonction triée est la suivante :
sorted(iterable, key=None, reverse=False)
Comme vous pouvez le voir, le seul argument requis est l'itérable, qui sera trié.
L'argument suivant est la clé. La clé est une fonction qui va servir à transformer chaque élément de l'itérable pour obtenir une valeur qui servira au tri. Cela sera utile pour trier une liste de dictionnaires, comme vous le verrez plus tard. La valeur par défaut est none, donc elle n'appliquera aucune fonction à moins qu'elle ne soit spécifiée.
Le dernier argument est l'argument inverse. Lorsqu'il est défini sur true, les éléments seront triés dans l'ordre inverse.
Dans la section suivante, j'utiliserai des exemples pour montrer comment utiliser la fonction.
Sorted Function Usage Examples
Liste des numéros
Le cas le plus simple de tri des valeurs est le tri d'une liste de nombres. Considérez l'exemple de code suivant :
# A list of unsorted values
numbers = [8, 4, 3, 9, 2, 0, 3]
# Sorting the numbers
sorted_numbers = sorted(numbers)
# Outputting the sorted values
print(sorted_numbers)
La sortie serait:
[0, 2, 3, 3, 4, 8, 9]

Comme vous pouvez le voir, les valeurs ont été triées par ordre croissant. Vous définiriez reverse sur true si vous vouliez les trier par ordre décroissant. Par conséquent, la ligne 4 dans l'exemple de code précédent serait :
sorted_numbers = sorted(numbers, reverse=True)
La sortie de l'exécution du programme modifié serait :
[9, 8, 4, 3, 3, 2, 0]

Liste des chaînes
La fonction triée prend en charge plus que des nombres. Vous pouvez également trier les chaînes. Pour trier des chaînes dans une liste, les premiers caractères des chaînes sont comparés. Les comparaisons sont effectuées sur les valeurs ASCII des caractères. Par exemple, 'hello' viendrait avant le mot 'world' parce que la valeur ASCII de 'h' est 104, inférieure à la valeur ASCII de 'w', 119.
Si une ou plusieurs chaînes ont le même premier caractère, leur deuxième caractère et les suivants sont comparés jusqu'à ce qu'un certain ordre soit trouvé. Voici un exemple de code où nous trions les noms des personnes.
# Creating a list of names
members_list = ['bob', 'dave', 'charlie', 'alice']
# Sorting the names
sorted_members_list = sorted(members_list)
# Printing the names
print(sorted_members_list)
Cela produira la sortie suivante:
['alice', 'bob', 'charlie', 'dave']

Étant donné que les valeurs ASCII sont utilisées, l'ordre des chaînes dépend du caractère qui vient en premier dans la table ASCII. Par exemple, un caractère majuscule viendrait avant un caractère minuscule parce que les caractères majuscules viennent avant les lettres minuscules en ASCII. Voici un tableau ASCII complet pour votre référence :

Autres itérables - chaînes, tuples et ensembles
Comme je l'ai mentionné, la fonction triée fonctionne avec toutes sortes d'itérables. Les mêmes règles s'appliquent à la manière dont les valeurs des itérables seront triées. Voici un exemple:
# Printing a sorted string
print(sorted("dijkstra"))
# Printing a sorted tuple of values
print(sorted((3, 4, 2, 1, 5, 0)))
# Printing a sorted set of values
print(sorted(set([4, 5, 5, 1, 3, 8, 9])))
La sortie de ceci sera:
['a', 'd', 'i', 'j', 'k', 'r', 's', 't']
[0, 1, 2, 3, 4, 5]
[1, 3, 4, 5, 8, 9]

Comme vous pouvez le voir, la sortie dans chaque cas est une liste.
Liste des dictionnaires
Vous pouvez également appliquer la fonction triée pour trier une liste de dictionnaires. Cependant, le tri des dictionnaires est un peu plus compliqué. En effet, contrairement aux nombres ou aux chaînes, un dictionnaire a plusieurs propriétés, chacune également valable pour la comparaison.
Donc, pour trier les dictionnaires, vous spécifiez une fonction qui résumera l'ensemble du dictionnaire à une valeur qui sera utilisée pour la comparaison. Cette fonction sera transmise à la fonction triée comme argument clé. Voici un exemple pour illustrer :
people = [
{ 'name': 'Alice', 'age': 27 },
{ 'name': 'Bob', 'age': 23 },
{ 'name': 'Charlie', 'age': 25}
]
people_sorted_by_age = sorted(people, key=lambda person: person['age'])
print(people_sorted_by_age)
Dans cet exemple, nous avons trois personnes représentées par un objet dictionnaire. Chaque objet a un attribut de nom et d'âge. Nous voulons trier les gens par âge. Par conséquent, lorsque nous appelons la fonction triée, nous passons une fonction comme argument clé.
Cette fonction prendra l'objet dictionnaire d'une personne et renverra l'âge de la personne. La valeur de retour de cette clé sera utilisée pour le tri. Par conséquent, tout le dictionnaire a été résumé en un simple entier qui peut être comparé. Pour plus de simplicité, j'ai utilisé une fonction lambda pour définir l'argument clé.
L'exécution du code produira la sortie suivante :
[{'name': 'Bob', 'age': 23}, {'name': 'Charlie', 'age': 25}, {'name': 'Alice', 'age': 27}]

Key Argument Use Case
L'argument clé n'a pas besoin d'être utilisé lors du tri des dictionnaires uniquement. Vous pouvez l'utiliser sur toutes les valeurs. Son utilisation est de fournir une clé qui peut être utilisée pour trier des valeurs. Voici des exemples de cas d'utilisation :
- Trier les valeurs en définissant une fonction clé qui prend la valeur et renvoie la longueur de la valeur.
- Trier les chaînes dans une liste sans tenir compte de la casse. Pour ce faire, chaque chaîne de la liste peut être convertie en minuscules. Ceci peut être réalisé en définissant une fonction clé qui prend la valeur clé d'une chaîne et renvoie une version minuscule de la chaîne.
- Tri des valeurs en fonction d'une valeur composite qui combine les valeurs d'autres entrées.
Runtime Complexity of the Sorted Function
La fonction triée a une complexité d'exécution de O(n log n), où n est le nombre d'éléments dans l'itérable d'entrée. Cette complexité provient du fait que la fonction utilise l'algorithme Timsort, qui est un algorithme de tri hybride basé sur le tri par fusion et le tri par insertion.
La complexité spatiale de la fonction est O(n), où n est toujours le nombre d'éléments dans l'entrée. Cela est dû au fait qu'une nouvelle liste est créée et renvoyée.
Sorted Function vs. Sort Function
Une autre option pour trier les valeurs est la fonction de tri. Cette section explique les principales différences entre les fonctions de tri et de tri.
- La fonction de tri modifie l'itérable en place, tandis que la fonction triée crée une nouvelle liste et la renvoie.
- Étant donné que les modifications sont effectuées sur place, le tri nécessite que l'entrée soit une liste. D'autre part, trié peut prendre n'importe quel itérable en entrée qui sera ensuite utilisé pour créer une nouvelle liste qui sera modifiée et renvoyée.
Mot de la fin
Dans cet article, nous avons couvert la fonction triée - ce qu'elle est, comment l'utiliser et les différents arguments qu'elle prend. Nous avons également couvert différents exemples d'utilisation de la fonction et sa complexité d'exécution et l'avons comparée à la fonction de tri.
Ensuite, vous voudrez peut-être lire notre article sur La fonction somme de Python.