¿Cuál es la verdadera diferencia entre un diccionario y una tabla hash?


Siempre he usado diccionarios. Escribo en Python.

Author: bernie, 2010-01-14

6 answers

Un diccionario es un concepto general que asigna claves a valores. Hay muchas maneras de implementar tal asignación.

Una tabla hash es una forma específica de implementar un diccionario.

Además de los hashtables, otra forma común de implementar diccionarios es árboles rojo-negro.

Cada método tiene sus propios pros y contras. Un árbol rojo-negro siempre puede realizar una búsqueda en O (log N). Una tabla hash puede realizar una búsqueda en tiempo O(1), aunque puede degradarse a O(N) dependiendo de la entrada.

 152
Author: R Samuel Klatchko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-20 18:48:26

Un diccionario es una estructura de datos que asigna claves a valores.

Una tabla hash es una estructura de datos que asigna claves a valores tomando el valor hash de la clave (aplicándole alguna función hash) y asignándolo a un bucket donde se almacenan uno o más valores.

IMO esto es análogo a preguntar la diferencia entre una lista y una lista enlazada.

Para mayor claridad, puede ser importante tener en cuenta que puede ser el caso de que Python implementa actualmente sus diccionarios usando tablas hash, y puede ser el caso en el futuro que Python cambie ese hecho sin causar que sus diccionarios dejen de ser diccionarios.

 23
Author: danben,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-17 13:29:06

"Un diccionario" tiene algunos significados diferentes en programación, como wikipedia le dirá "" matriz asociativa", el sentido en el que Python usa el término (también conocido como" un mapeo"), es uno de esos significados (pero" diccionario de datos "y" ataques de diccionario " en intentos de adivinar contraseñas, también son importantes).

Las tablas Hash son estructuras de datos importantes; Python las usa para implementar dos tipos de datos integrados importantes, dict y set.

Así que, incluso en Python, no puedes considere " tabla hash "como sinónimo de"diccionario"... dado que una estructura de datos similar también se utiliza para implementar "conjuntos"!-)

 14
Author: Alex Martelli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-14 00:01:41

Un diccionario Python se implementa internamente con una tabla hash.

 8
Author: Nicolás,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-13 23:55:33

Una tabla hash siempre usa alguna función que opera en un valor para determinar dónde se almacenará un valor. Un diccionario (como creo que pretende) es un término más general, y simplemente indica un mecanismo de búsqueda, que podría ser una tabla hash o podría implementarse mediante una estructura más simple que no considera el valor en sí mismo al determinar su ubicación de almacenamiento.

 1
Author: mickeyf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-14 00:14:08

El diccionario

Se implementa usando tablas hash. En mi opinión, la diferencia entre el 2 se puede pensar como la diferencia entre Pilas y matrices donde estaríamos utilizando matrices para implementar Pilas.

 0
Author: Thunderhashy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-14 00:06:43