J'ai une certaine confusion sur les dictionnaires et les tables de hachage que je voulais clarifier. Supposons que j'ai le dictionnaire actuel et la sortie actuelle des hachages de l'exécution actuelle de python.Dictionnaires et Hashtables complexité de l'espace
Dict = dict()
print(hash('a'))
print(hash('b'))
print(hash('c'))
Dict['a'] = 1
Dict['b'] = 2
Dict['c'] = 3
print(Dict)
a la sortie de
1714333803
1519074822
1245896149
{'a': 1, 'c': 3, 'b': 2}
donc à ma connaissance une table de hachage est tout simplement un tableau où le hachage est l'index de la table de hachage. Par exemple, 'a' avait un hash de 1714333803, donc mon index de hashtable 1714333803 a une valeur de 'a'. Donc, je suis confus combien d'index une hashtable a et comment la fonction de hachage produit la réponse? Utilise-t-il le module et a-t-il une gamme fixe d'index? Parce que l'impression donnée du dictionnaire génère {'a': 1, 'c': 3, 'b': 2}
, mais est-il correct de supposer que, même si cela sort, le dictionnaire est en fait un tableau d'au moins 1714333803 index, parce que cela semble ridiculement exagéré de contenir 3 éléments et de ne pas mentionner combien d'un le gaspillage de l'espace c'est. Aussi pour la hashtable, qu'est-ce qui dans les index n'a aucune valeur, null?
Vous pouvez redimensionner dynamiquement le tableau. Cependant, il devra recalculer le hachage pour chaque clé. Ce lien est intéressant http://www.laurentluce.com/posts/python-dictionary-implementation/ – SnoozeTime
Que voulez-vous dire par 'index qui n'a pas de valeur, null'? Des clés qui n'ont pas de hash? Ou des positions dans le tableau qui n'ont pas été remplies? – MisterMiyagi
Voir aussi cette vidéo: https://www.youtube.com/watch?v=C4Kc8xzcA68 –