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 Python sont-ils garantis pour maintenir l'ordre d'insertion dans la version 3.6 ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-20 19:37:141001parcourir

Are Python Dictionaries Guaranteed to Maintain Insertion Order in 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 :

  • dk_entries : contient les entrées de clé et de valeur dans l'ordre de insertion.
  • dk_indices : stocke les index dans dk_entries, agissant comme une table de hachage.

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!

Déclaration:
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