web-dev-qa-db-fra.com

Quelle est la vraie différence entre un dictionnaire et une table de hachage?

J'ai toujours utilisé des dictionnaires. J'écris en Python.

41
TIMEX

Un dictionnaire est un concept général qui mappe les clés aux valeurs. Il existe de nombreuses façons de mettre en œuvre un tel mappage.

Une table de hachage est un moyen spécifique d'implémenter un dictionnaire.

Outre les tables de hachage, une autre façon courante d'implémenter des dictionnaires est arbres rouge-noir .

Chaque méthode a ses avantages et ses inconvénients. Un arbre rouge-noir peut toujours effectuer une recherche dans O (log N). Une table de hachage peut effectuer une recherche dans O(1) temps, bien que cela puisse se dégrader en O(N) selon l'entrée).

196
R Samuel Klatchko

Un dictionnaire est une structure de données qui mappe les clés aux valeurs.

Une table de hachage est une structure de données qui mappe des clés à des valeurs en prenant la valeur de hachage de la clé (en lui appliquant une fonction de hachage) et en la mappant à un compartiment où une ou plusieurs valeurs sont stockées.

OMI, cela revient à demander la différence entre une liste et une liste chaînée.

Pour plus de clarté, il peut être important de noter qu'il PEUT être le cas que Python implémente actuellement leurs dictionnaires à l'aide de tables de hachage, et il POURRAIT être le cas à l'avenir que Python change ce fait sans que leurs dictionnaires cessent d'être des dictionnaires.

28
danben

"Un dictionnaire" a plusieurs significations différentes dans la programmation, comme wikipedia vous dira - "tableau associatif", le sens dans lequel Python utilise le terme (aussi connu sous le nom de "mappage"), est l'une de ces significations (mais "dictionnaire de données" et "attaques de dictionnaire" dans les tentatives de devinettes de mot de passe sont également importants).

Les tables de hachage sont des structures de données importantes; Python les utilise pour implémenter deux types de données intégrés importants, dict et set.

Donc, même en Python, vous ne pouvez pas considérer "table de hachage" comme synonyme de "dictionnaire" ... car une structure de données similaire est également utilisée pour implémenter des "ensembles"! -)

16
Alex Martelli

Un dictionnaire Python est implémenté en interne avec une table de hachage.

10
Nicolás

Une table de hachage utilise toujours une fonction opérant sur une valeur pour déterminer où une valeur sera stockée. Un dictionnaire (comme je pense que vous en avez l'intention) est un terme plus général et indique simplement un mécanisme de recherche, qui pourrait être une table de hachage ou être implémenté par une structure plus simple qui ne prend pas en compte la valeur elle-même pour déterminer son emplacement de stockage.

Le dictionnaire est implémenté à l'aide de tables de hachage. À mon avis, la différence entre les 2 peut être considérée comme la différence entre les piles et les tableaux où nous utiliserions des tableaux pour implémenter des piles.

0
Thunderhashy