Maison > développement back-end > Tutoriel Python > Les dictionnaires Python 3.6 sont-ils ordonnés et quel impact cela a-t-il sur les performances ?

Les dictionnaires Python 3.6 sont-ils ordonnés et quel impact cela a-t-il sur les performances ?

Patricia Arquette
Libérer: 2024-12-21 17:19:10
original
991 Les gens l'ont consulté

Are Python 3.6  Dictionaries Ordered, and How Does This Impact Performance?

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.

  • tableau dk_entries : Stocke les entrées du dictionnaire dans l'ordre dans lequel elles ont été insérées.
  • tableau dk_indices : Contient les indices qui pointent au tableau dk_entries.

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'}
Copier après la connexion

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']]
Copier après la connexion

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!

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