Accéder au contenu principal

Comment trier un dictionnaire par valeur en Python

Apprenez des méthodes efficaces pour trier un dictionnaire par valeurs en Python. Découvrez les tris par ordre croissant et décroissant, ainsi que des astuces pour les tris par clé.
Actualisé 14 nov. 2024  · 5 min de lecture

Le tri est une opération fondamentale dans la manipulation des données, et les dictionnaires en Python ne font pas exception. Que nous travaillions sur un projet d'analyse de données complexe ou sur un simple script, il peut être extrêmement utile de comprendre comment trier efficacement un dictionnaire par valeur.

Dans cet article, nous décomposons les différentes méthodes pour trier les dictionnaires en fonction de leurs valeurs en Python, en nous assurant que nous disposons des outils nécessaires pour organiser nos données en fonction des besoins.

La réponse courte : Comment trier un dictionnaire par valeur en Python

Pour trier rapidement un dictionnaire par valeur, nous pouvons utiliser la fonction intégrée de Python .sorted() en combinaison avec une fonction lambda. Cette méthode est simple et efficace pour la plupart des cas d'utilisation.

student_scores = {
    'Alex': 88,
    'Ben': 75,
    'Cyrus': 93,
    'Denver': 85
}
sorted_by_values = dict(sorted(student_scores.items(), key=lambda item: item[1]))
{'Ben': 75, 'Denver': 85, 'Alex': 88, 'Cyrus': 93}

Prenons maintenant un peu de recul pour comprendre les dictionnaires Python et les raisons pour lesquelles nous pourrions avoir besoin de les trier.

Que sont les dictionnaires Python ?

Python dictionnaires sont un type de structure de données qui stocke les données sous forme de paires clé-valeur. Ils sont très polyvalents et permettent des recherches, des insertions et des suppressions rapides. Voici un exemple simple :

student_scores = {
    'Alex': 88,
    'Ben': 75,
    'Cyrus': 93,
    'Denver': 85
}

Dans le dictionnaire ci-dessus, les noms des élèves sont les clés et leurs notes sont les valeurs. 

Les dictionnaires sont utiles dans de nombreux cas, notamment lorsqu'il s'agit de stocker et d'extraire des données de manière efficace. Cependant, il est parfois nécessaire de trier ces données par valeurs plutôt que par clés - par exemple, lorsque nous voulons classer les étudiants en fonction de leurs notes.

Comment trier un dictionnaire par valeur en Python

Examinons maintenant de plus près la fonction .sorted() de Python et la manière de l'utiliser spécifiquement pour trier les dictionnaires par valeur.

Comment trier un dictionnaire par valeur en utilisant .sorted()

La fonction.sorted() est un outil puissant et flexible pour effectuer des tris en Python. Pour trier un dictionnaire en fonction de ses valeurs, nous pouvons utiliser une fonction lambda pour spécifier que le tri doit être basé sur les valeurs du dictionnaire.

student_scores = {
    'Alex': 88,
    'Ben': 75,
    'Cyrus': 93,
    'Denver': 85
}
sorted_by_values = dict(sorted(student_scores.items(), key=lambda item: item[1]))
print(sorted_by_values)
{'Ben': 75, 'Denver': 85, 'Alex': 88, 'Cyrus': 93}

Dans cet exemple, student_scores.items() renvoie un objet de vue qui affiche une liste des paires clé-valeur du dictionnaire. La fonction .sorted() trie ces paires en fonction des valeurs (item[1] ), et dict() reconvertit la liste triée en dictionnaire.

Comment trier un dictionnaire par valeur dans l'ordre croissant ou décroissant ?

Par défaut, la fonction .sorted() trie par ordre croissant. Toutefois, en fonction de la situation, nous pouvons facilement modifier ce tri pour qu'il s'effectue dans l'ordre croissant ou décroissant en fixant le paramètre reverse à True ou False.

Comment trier un dictionnaire par ordre croissant ?

Comme indiqué, un dictionnaire est trié par défaut dans l'ordre croissant lorsque vous utilisez la fonction.sorted(). Nous pouvons également obtenir un ordre croissant en réglant le paramètre reverse sur False.

sorted_by_values_asc = dict(sorted(student_scores.items(), key=lambda item: item[1], reverse=False))
print(sorted_by_values_asc)
{'Ben': 75, 'Denver': 85, 'Alex': 88,  'Cyrus': 93}

Comment trier un dictionnaire par ordre décroissant ?

Si nous voulons trier par ordre croissant, nous pouvons définir le paramètre reverse à True.

sorted_by_values_desc = dict(sorted(student_scores.items(), key=lambda item: item[1], reverse=True))
print(sorted_by_values_desc)
{'Cyrus': 93, 'Alex': 88, 'Denver': 85, 'Ben': 75}

Bonus : Comment trier un dictionnaire par clé en Python

Bien que cet article se concentre sur le tri par valeurs, il est également utile de savoir comment trier un dictionnaire par ses clés. Vous pouvez procéder de la même manière en utilisant la fonction .sorted() .

sorted_by_keys = dict(sorted(student_scores.items()))
print(sorted_by_keys)
{'Alex': 88, 'Ben': 75, 'Cyrus': 93, 'Denver': 85}

Pour l'ordre décroissant, il suffit de définir reverse=True:

sorted_by_keys_desc = dict(sorted(student_scores.items(), reverse=True))
print(sorted_by_keys_desc)
{'Denver': 85', 'Cyrus': 93, 'Ben': 75, 'Alex': 88}

Conclusion

Trier un dictionnaire selon ses valeurs en Python est une tâche courante qui peut être accomplie facilement à l'aide de la fonction .sorted(). Que nous ayons besoin de données par ordre croissant ou décroissant, la compréhension de ces techniques rendra nos tâches de manipulation de données plus simples et plus efficaces. En maîtrisant ces méthodes de tri, nous pouvons nous assurer que nos données sont organisées de manière cohérente pour répondre au mieux à nos besoins.

FAQ

Q1 : Puis-je trier un dictionnaire par valeurs si les valeurs sont des chaînes de caractères au lieu de nombres ?

A1 : Oui, nous pouvons trier un dictionnaire par valeurs, même si les valeurs sont des chaînes de caractères. La fonction .sorted() permet de trier les valeurs par ordre alphabétique, croissant ou décroissant, comme elle le fait avec les nombres.

Q2 : Comment trier un dictionnaire par valeurs s'il contient des dictionnaires imbriqués ?

A2 : Pour trier un dictionnaire avec des dictionnaires imbriqués, nous devons définir une fonction de tri personnalisée qui extrait et compare les valeurs imbriquées pertinentes. Cela nécessite une fonction lambda plus complexe ou une fonction séparée pour gérer la comparaison.

Q3 : Puis-je trier un dictionnaire par valeurs sur place sans créer un nouveau dictionnaire ?

A3 : Non, les dictionnaires dans Python sont intrinsèquement des collections non ordonnées depuis les versions antérieures à 3.7, et même s'ils conservent l'ordre d'insertion à partir de Python 3.7, il n'y a pas de méthode intégrée pour les trier sur place. Le tri d'un dictionnaire entraîne toujours la création d'un nouveau dictionnaire dans l'ordre souhaité.

Q4 : Quelle est la complexité en temps du tri d'un dictionnaire par valeurs en Python ?

A4 : La complexité temporelle du tri d'un dictionnaire par valeurs à l'aide de la fonction .sorted() est O(n log n), où n est le nombre de paires clé-valeur dans le dictionnaire. En effet, .sorted() utilise en interne Timsort, un algorithme de tri hybride de cette complexité.

Q5 : Le tri d'un dictionnaire par valeurs modifie-t-il le dictionnaire d'origine ?

A5 : Non, le tri d'un dictionnaire par valeurs à l'aide de la fonction .sorted() crée un nouveau dictionnaire. Le dictionnaire original reste inchangé.


Photo of Neetika Khandelwal
Author
Neetika Khandelwal
LinkedIn
Je suis développeur Java et rédacteur technique accompli, spécialisé dans la science des données, l'intelligence artificielle (IA) et la programmation Java. Avec plus de 3 ans d'expérience dans le développement de logiciels, j'ai acquis une bonne expertise dans la création d'applications robustes et évolutives et dans l'exploitation de la polyvalence de Java pour résoudre des problèmes complexes. Je suis passionné par le partage des connaissances avec l'ensemble de la communauté technologique. À travers des articles techniques complets, des tutoriels et des guides, j'essaie de démystifier les sujets complexes liés à la science des données et à l'IA, en les rendant accessibles aux débutants et aux professionnels expérimentés. Actuellement, j'ai publié plus de 125 blogs.
Sujets

Apprenez-en plus sur Python avec ces cours !

Certification disponible

cours

Introduction à Python

4 hr
5.6M
Maîtrisez les bases de l'analyse de données avec Python en seulement quatre heures. Ce cours en ligne vous présentera l'interface Python et explorera les packages populaires.
Afficher les détailsRight Arrow
Commencer Le Cours
Voir plusRight Arrow