Maison >développement back-end >Tutoriel Python >Les dictionnaires Python sont-ils garantis pour maintenir l'ordre d'insertion dans la version 3.6 ?
Les dictionnaires sont-ils ordonnés dans Python 3.6 ?
Depuis Python 3.6, les dictionnaires de l'implémentation CPython sont ordonnés par insertion, ce qui signifie qu'ils préservent l'ordre des éléments insérés. Cependant, ce comportement est considéré comme un détail d'implémentation et ne doit pas être invoqué.
Ordre d'insertion garanti dans Python 3.7
Dans Python 3.7, l'ordre d'insertion pour les dictionnaires est devenu un fonctionnalité linguistique garantie. Cela signifie que toutes les implémentations Python conformes doivent offrir un dictionnaire ordonné par insertion.
Améliorations des performances avec l'ordre d'insertion
La nouvelle implémentation du dictionnaire dans Python 3.6 permet d'obtenir l'ordre d'insertion en conservant deux arrays :
Cette conception réduit la surcharge de mémoire en stockant uniquement les entrées requises et en utilisant un tableau clairsemé d'index. L'implémentation précédente allouait un tableau clairsemé d'entrées de clé et de valeur, ce qui entraînait des espaces vides.
Visualisation de la structure des données
Par exemple, le dictionnaire { 'timmy': ' rouge', 'barry' : 'vert', 'guido' : 'bleu' } est stocké sous :
indices = [None, 1, None, None, None, 0, None, 2] entries = [[-9092791511155847987, 'timmy', 'red'], [-8522787127447073495, 'barry', 'green'], [-6480567542315338377, 'guido', 'blue']]
Dans le ancienne conception, il y aurait de nombreux espaces vides pour minimiser les collisions. La nouvelle approche réduit l'utilisation de la mémoire en déplaçant la rareté vers le tableau d'indices.
En conclusion, l'ordre d'insertion dans les dictionnaires Python 3.6 est une amélioration significative qui améliore l'efficacité de la mémoire et rend les dictionnaires plus fiables dans les implémentations 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!