Pourquoi les clés de dictionnaire dans les anciennes versions de Python ne sont-elles pas toujours ordonnées ?

Susan Sarandon
Libérer: 2024-11-19 04:23:02
original
268 Les gens l'ont consulté

Why Are Dictionary Keys in Older Python Versions Not Always Ordered?

Ordre des clés dans les dictionnaires dans les anciennes versions de Python

Dans les versions Python antérieures à 3.6, l'ordre des clés dans les dictionnaires n'était pas garanti. Cela pourrait conduire à des résultats inattendus lors de l'itération sur un dictionnaire ou de l'accès à ses clés.

Pour comprendre le problème, considérons le code suivant :

d = {'a': 0, 'b': 1, 'c': 2}
l = d.keys()
print(l)
Copier après la connexion

Dans cet exemple, la méthode key() renvoie une liste des clés du dictionnaire. Toutefois, l'ordre des clés dans la liste n'est pas garanti. Dans les versions Python 2.7 et antérieures, les clés étaient renvoyées dans l'ordre d'insertion. Cependant, à partir de Python 3.0, les clés étaient renvoyées dans un ordre arbitraire.

Cette incohérence peut être problématique si vous vous fiez à l'ordre des clés dans un dictionnaire. Par exemple, si vous utilisez un dictionnaire pour stocker les éléments d'une liste de courses, vous pouvez vous attendre à ce que les clés soient renvoyées dans l'ordre dans lequel vous les avez ajoutées au dictionnaire. Cependant, à partir des versions Python 3.0, cela n'est pas garanti.顺序的保证。以下Utilisez la fonction OrderedDict:

另一个选择是使用 fonction sorted() pour trier les clés par ordre croissant. Cependant, cela nécessite une étape supplémentaire et n’est pas toujours le comportement souhaité.
from collections import OrderedDict

d = OrderedDict([('a', 0), ('b', 1), ('c', 2)])
l = list(d.keys())
print(l)  # ['a', 'b', 'c']
Copier après la connexion

Pour les versions Python 3.6 et ultérieures, les dictionnaires conservent par défaut l'ordre d'insertion. Cependant, il est toujours recommandé d'utiliser OrderedDict si vous avez besoin d'un ordre d'insertion garanti dans différentes implémentations de Python.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal