Comment trier un dictionnaire par clé ou par valeur en Python

Un dictionnaire en Python est un type de conteneur très polyvalent et utile, capable de stocker une collection de valeurs et de les récupérer via des clés.
 
 
Les valeurs peuvent être des objets de tout type (les dictionnaires peuvent même être imbriqués dans d’autres dictionnaires) et les clés peuvent être de n’importe quel objet tant qu’il est hashable, ce qui signifie qu’il est immuable. Contrairement aux listes ou aux tuples, les paires clé/valeur dans les dictionnaire n’ont pas un ordre défini, ce qui signifie que nous pouvons avoir un dictionnaire comme ceci:

colors = {'blue': 2, 'red': 1, 'green': 4, 'orange': 3}

 

Trier un dictionnaire par clé

Si nous voulons trier les objets d’un dictionnaire en fonction de leurs clés, la méthode la plus simple consiste à utiliser la méthode « sorted » de Python, qui prend toute itérable et renvoie une liste des valeurs triées (par ordre croissant par défaut).

names = {'carlos': 2, 'daoud': 1, 'bob': 4, 'alex': 3}

for k in sorted(names.keys()):
    print("%s: %s" % (k, names[k]))

Cela produit le résultat suivant:

alex: 3
bob: 4
carlos: 2
daoud: 1

Nous remarquons que cette méthode a renvoyé une liste des clés dans l’ordre croissant, et presque dans l’ordre alphabétique.
 

Trier un dictionnaire par valeur

De la même manière que nous avons fait avec les clés, nous pouvons utiliser la fonction « sorted » avec la fonction « lambda » pour trier le dictionnaire par ses valeurs:

names = {'carlos': 2, 'daoud': 1, 'bob': 4, 'alex': 3}

for k, v in sorted(names.items(), key=lambda x: x[1]):
    print("%s: %s" % (k, v))

Cela produit le résultat suivant:

daoud: 1
carlos: 2
alex: 3
bob: 4

 
QCM PythonQCM Python – Partie 1Questions pratiques pour testez vos connaissances sur la programmation Python à savoir des structures conditionnelles, des opérations logiques, des boucles, des fonctions, etc. Testez votre…Lire plus

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *