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 Python

Une réflexion sur “Comment trier un dictionnaire par clé ou par valeur en Python

  • août 4, 2022 à 2:56 pm
    Permalien

    Bonjour,
    c’est complet mais je ne trouve pas la réponse à mon problème… Snif
    J’ai un dictionnaire dont les clés ont pour valeur une liste contenant des tuples et je souhaite trier les tuples de chaque liste en fonction du premier terme du tuple qui est un « float ».
    dic ={ ‘yo’:[(2,’oui’,’mardi’),(4,’pas’,’mercredi’),(1,’non’,’lundi’)],….}
    ici je voudrais avoir (1,’non’,’lundi’),(2,’oui’,’mardi’),(4,’pas’,’mercredi’)

    Merci

    Répondre

Laisser un commentaire

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