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.