Comment vérifier si les clés d'un dictionnaire sont triées en Python

PythonPythonBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à vérifier si les clés d'un dictionnaire sont triées en Python. Le laboratoire se concentre sur l'utilisation de la fonction sorted() en combinaison avec la méthode keys() pour parcourir un dictionnaire et accéder à ses clés dans un ordre trié.

Vous commencerez par créer un dictionnaire, puis en utilisant my_dict.keys() pour obtenir un objet vue contenant les clés. Cet objet vue est ensuite passé à la fonction sorted(), qui renvoie une liste des clés triées par ordre alphabétique. Enfin, vous parcourrez les clés triées et afficherez chaque clé ainsi que sa valeur correspondante dans le dictionnaire, démontrant ainsi comment traiter les clés d'un dictionnaire dans un ordre spécifique.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/ControlFlowGroup -.-> python/for_loops("For Loops") python/DataStructuresGroup -.-> python/dictionaries("Dictionaries") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") subgraph Lab Skills python/conditional_statements -.-> lab-559509{{"Comment vérifier si les clés d'un dictionnaire sont triées en Python"}} python/for_loops -.-> lab-559509{{"Comment vérifier si les clés d'un dictionnaire sont triées en Python"}} python/dictionaries -.-> lab-559509{{"Comment vérifier si les clés d'un dictionnaire sont triées en Python"}} python/function_definition -.-> lab-559509{{"Comment vérifier si les clés d'un dictionnaire sont triées en Python"}} python/build_in_functions -.-> lab-559509{{"Comment vérifier si les clés d'un dictionnaire sont triées en Python"}} end

Apprenez-en sur les clés triées

Dans cette étape, vous apprendrez à parcourir un dictionnaire en Python, en particulier à accéder aux clés dans un ordre trié. Les dictionnaires en Python ne sont pas ordonnés de manière intrinsèque, ce qui signifie que l'ordre dans lequel vous ajoutez les éléments n'est pas nécessairement l'ordre dans lequel ils sont stockés. Cependant, il existe des situations où vous devez traiter les clés d'un dictionnaire dans un ordre spécifique, par exemple par ordre alphabétique ou numérique.

Pour y parvenir, vous pouvez utiliser la fonction sorted() en combinaison avec la méthode keys() d'un dictionnaire. La méthode keys() renvoie un objet vue qui affiche une liste de toutes les clés du dictionnaire. La fonction sorted() prend ensuite cette liste de clés et renvoie une nouvelle liste avec les clés triées par ordre croissant.

Commençons par un exemple simple. Tout d'abord, créez un fichier Python nommé sort_keys.py dans votre répertoire ~/project en utilisant l'éditeur VS Code.

## Create a dictionary
my_dict = {"b": 2, "a": 1, "c": 3}

## Get the keys and sort them
sorted_keys = sorted(my_dict.keys())

## Print the sorted keys
print(sorted_keys)

## Iterate through the dictionary using the sorted keys
for key in sorted_keys:
    print(f"Key: {key}, Value: {my_dict[key]}")

Dans ce code :

  • Nous créons un dictionnaire appelé my_dict avec trois paires clé-valeur. Notez que les clés ne sont pas dans l'ordre alphabétique.
  • Nous utilisons my_dict.keys() pour obtenir un objet vue contenant les clés du dictionnaire.
  • Nous passons cet objet vue à la fonction sorted(), qui renvoie une liste des clés triées par ordre alphabétique.
  • Nous parcourons ensuite la liste sorted_keys et affichons chaque clé ainsi que sa valeur correspondante dans le dictionnaire.

Pour exécuter ce script, ouvrez votre terminal dans VS Code et exécutez la commande suivante :

python sort_keys.py

Vous devriez voir la sortie suivante :

['a', 'b', 'c']
Key: a, Value: 1
Key: b, Value: 2
Key: c, Value: 3

Comme vous pouvez le voir, les clés sont maintenant traitées par ordre alphabétique. Cette approche est utile lorsque vous devez présenter ou traiter des données de dictionnaire de manière cohérente et prévisible.

Comparez keys() avec sorted()

Dans l'étape précédente, vous avez appris à utiliser la fonction sorted() avec la méthode keys() pour parcourir un dictionnaire dans un ordre trié. Dans cette étape, nous approfondirons les différences entre l'utilisation directe de keys() et l'utilisation de sorted() avec keys(). Comprendre ces différences est essentiel pour écrire un code Python efficace et lisible.

La méthode keys() renvoie un objet vue (view object), qui est une vue dynamique des clés du dictionnaire. Cela signifie que si le dictionnaire change, l'objet vue reflète ces modifications. Cependant, l'objet vue lui-même n'est pas une liste et ne prend pas en charge le tri directement.

D'un autre côté, la fonction sorted() renvoie une nouvelle liste contenant tous les éléments de l'itérable dans l'ordre croissant. Lorsque vous utilisez sorted(my_dict.keys()), vous créez une nouvelle liste triée des clés du dictionnaire, laissant le dictionnaire original et son objet vue inchangés.

Illustrons cela avec un exemple. Ouvrez le fichier sort_keys.py dans votre répertoire ~/project en utilisant l'éditeur VS Code et modifiez-le comme suit :

## Create a dictionary
my_dict = {"b": 2, "a": 1, "c": 3}

## Get the keys view object
keys_view = my_dict.keys()

## Print the keys view object
print("Keys view object:", keys_view)

## Print the sorted keys
sorted_keys = sorted(my_dict.keys())
print("Sorted keys:", sorted_keys)

## Modify the dictionary
my_dict["d"] = 4

## Print the keys view object again
print("Keys view object after modification:", keys_view)

## Iterate through the dictionary using the sorted keys
for key in sorted_keys:
    print(f"Key: {key}, Value: {my_dict[key]}")

Dans ce code :

  • Nous créons un dictionnaire appelé my_dict.
  • Nous obtenons l'objet vue des clés en utilisant my_dict.keys() et le stockons dans la variable keys_view.
  • Nous affichons l'objet keys_view et la liste sorted_keys.
  • Nous modifions ensuite le dictionnaire en ajoutant une nouvelle paire clé-valeur.
  • Nous affichons à nouveau l'objet keys_view pour montrer qu'il reflète les modifications du dictionnaire.
  • Enfin, nous parcourons la liste sorted_keys et affichons les paires clé-valeur. Notez que la liste sorted_keys reste inchangée et ne reflète pas l'ajout de la clé "d".

Maintenant, exécutez le script en utilisant la commande suivante :

python sort_keys.py

Vous devriez voir la sortie suivante :

Keys view object: dict_keys(['b', 'a', 'c'])
Sorted keys: ['a', 'b', 'c']
Keys view object after modification: dict_keys(['b', 'a', 'c', 'd'])
Key: a, Value: 1
Key: b, Value: 2
Key: c, Value: 3

Observez que :

  • L'objet keys_view est une vue dynamique des clés du dictionnaire. Lorsque nous modifions le dictionnaire, l'objet keys_view reflète les modifications.
  • La liste sorted_keys est une liste statique contenant les clés au moment de sa création. Elle ne reflète pas les modifications apportées au dictionnaire par la suite.
  • La boucle ne parcourt que les clés qui étaient présentes lorsque sorted_keys a été créée.

Cet exemple met en évidence la différence clé entre keys() et sorted(). keys() fournit une vue dynamique, tandis que sorted() crée une liste triée statique. Choisissez la méthode appropriée en fonction de votre besoin de refléter les modifications du dictionnaire ou de travailler avec un ensemble fixe de clés triées.

Vérifiez l'ordre avec une comparaison de listes

Dans cette étape, vous apprendrez à vérifier l'ordre des clés dans un dictionnaire en utilisant une comparaison de listes. Cela est utile lorsque vous devez vous assurer que les clés sont dans un ordre spécifique, comme l'ordre alphabétique ou numérique, à des fins de test ou de validation.

Pour vérifier l'ordre des clés, vous pouvez comparer la liste triée des clés avec une liste prédéfinie représentant l'ordre attendu. Si les deux listes sont identiques, cela signifie que les clés sont dans l'ordre souhaité.

Modifions le fichier sort_keys.py dans votre répertoire ~/project en utilisant l'éditeur VS Code pour inclure une fonction qui vérifie l'ordre des clés :

## Create a dictionary
my_dict = {"b": 2, "a": 1, "c": 3}

def check_key_order(dictionary, expected_order):
    """
    Checks if the keys in the dictionary are in the expected order.
    """
    sorted_keys = sorted(dictionary.keys())
    return sorted_keys == expected_order

## Define the expected order
expected_order = ["a", "b", "c"]

## Check if the keys are in the expected order
is_correct_order = check_key_order(my_dict, expected_order)

## Print the result
print("Is the key order correct?", is_correct_order)

## Example with incorrect order
expected_order_incorrect = ["b", "a", "c"]
is_correct_order_incorrect = check_key_order(my_dict, expected_order_incorrect)
print("Is the key order correct (incorrect order)?", is_correct_order_incorrect)

Dans ce code :

  • Nous définissons une fonction appelée check_key_order qui prend un dictionnaire et une liste d'ordre attendu en entrée.
  • À l'intérieur de la fonction, nous trions les clés du dictionnaire en utilisant sorted(dictionary.keys()).
  • Nous comparons la liste triée des clés avec la liste expected_order en utilisant l'opérateur ==.
  • La fonction renvoie True si les deux listes sont identiques, et False sinon.
  • Nous définissons ensuite une liste expected_order avec l'ordre alphabétique correct.
  • Nous appelons la fonction check_key_order avec le dictionnaire et la liste expected_order et affichons le résultat.
  • Nous fournissons également un exemple avec un ordre incorrect pour démontrer le fonctionnement de la fonction.

Maintenant, exécutez le script en utilisant la commande suivante :

python sort_keys.py

Vous devriez voir la sortie suivante :

Is the key order correct? True
Is the key order correct (incorrect order)? False

Cette sortie confirme que la fonction check_key_order identifie correctement si les clés sont dans l'ordre attendu. Cette technique est précieuse pour valider les données et vous assurer que votre code se comporte comme prévu lorsqu'il s'agit de dictionnaires avec des exigences d'ordre de clés spécifiques.

Résumé

Dans ce laboratoire (lab), vous avez appris à parcourir un dictionnaire Python et à accéder à ses clés dans un ordre trié. Les dictionnaires ne sont pas ordonnés de manière intrinsèque, mais en utilisant la méthode keys() pour récupérer un objet vue (view object) des clés du dictionnaire, puis en appliquant la fonction sorted(), vous pouvez obtenir une liste de clés triées dans l'ordre croissant.

Cette liste triée peut ensuite être utilisée pour parcourir le dictionnaire, traitant les paires clé - valeur dans l'ordre souhaité. Le code exemple a démontré comment créer un dictionnaire, trier ses clés par ordre alphabétique, puis afficher chaque clé avec sa valeur correspondante, mettant en évidence l'application pratique du tri des clés de dictionnaire.