Les dictionnaires Python 3.6 sont-ils ordonnés ?
Dans les versions Python 3.6 et supérieures, les dictionnaires maintiennent un ordre d'insertion pour leurs éléments. Ce comportement est connu sous le nom de « ordre d'insertion ». Contrairement à OrderedDict, qui offre des fonctionnalités avancées liées à l'ordre, les dictionnaires conservent uniquement l'ordre d'insertion des éléments.
Comment Python 3.6 améliore les performances du dictionnaire tout en préservant l'ordre
Le Python 3.6 l'implémentation du dictionnaire utilise une approche à double tableau pour améliorer l'efficacité de la mémoire tout en conservant l'insertion order.
Cette approche évite le besoin d'un tableau peu peuplé, ce qui était le cas dans les implémentations précédentes. Au lieu de cela, il stocke uniquement les entrées nécessaires et leurs index, ce qui entraîne une utilisation de la mémoire plus compacte.
Représentation visuelle :
Considérez le dictionnaire suivant :
d = {'timmy': 'red', 'barry': 'green', 'guido': 'blue'}
Dans la nouvelle implémentation, il serait stocké comme :
indices = [None, 1, None, None, None, 0, None, 2] entries = [[-9092791511155847987, 'timmy', 'red'], [-8522787127447073495, 'barry', 'green'], [-6480567542315338377, 'guido', 'blue']]
Par rapport à l'implémentation précédente, ceci Cette approche réduit considérablement le gaspillage de mémoire.
Avantages de la nouvelle implémentation du dictionnaire
Principalement, la nouvelle implémentation améliore l'utilisation de la mémoire tout en préservant l'ordre d'insertion. Bien que les différences de vitesse entre l'ancienne et la nouvelle implémentation ne soient pas spectaculaires, certaines opérations telles que l'itération et le redimensionnement peuvent entraîner une amélioration des performances.
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!