Quiero usar una estructura como HashTable. ¿Hay una estructura similar en Wolfram Mathematica?¿Hay una estructura HashTable en Wolfram Mathematica?
Respuesta
Actualización: Mathematica versión 10 introdujo la estructura de datos Association
(tutorial).
Existen varias posibilidades. La posibilidad más sencilla, que funciona bien si no necesita agregar o eliminar claves de su tabla, o cambiar sus valores asociados, es construir una lista de reglas con la clave en el lado izquierdo y el valor en el derecho lado derecho, y use Dispatch
en él.
Si necesita cambiar las entradas en su tabla, puede usar el DownValues
de un símbolo como una tabla hash. Esto soportará todas las operaciones que comúnmente se usan con las tablas hash. Esta es la forma más sencilla de hacerlo:
(* Set some values in your table.*)
In[1]:= table[a] = foo; table[b] = bar; table[c] = baz;
(* Test whether some keys are present. *)
In[2]:= {ValueQ[table[a]], ValueQ[table[d]]}
Out[2]:= {True, False}
(* Get a list of all keys and values, as delayed rules. *)
In[3]:= DownValues[table]
Out[3]:= {HoldPattern[table[a]] :> foo, HoldPattern[table[b]] :> bar,
HoldPattern[table[c]] :> baz}
(* Remove a key from your table. *)
In[4]:= Unset[table[b]]; ValueQ[table[b]]
Out[4]:= False
Yo diría que la estructura más similar que puede obtener fuera de la caja es sparse arrays.
Estoy de acuerdo con Pillsy, pero ver también esta respuesta:
Incluye una función muy útil para obtener las claves de una tabla hash.
he hecho módulo Dictionary.m, que contenía:
DictHasKey = Function[
{
dict,
key
},
ValueQ[dict[key]]
]
DictAddKey = Function[
{
dict,
key,
value
},
If[
DictHasKey[dict,key],
Print["Warning, Dictionary already has key " <> ToString[key]]
];
dict[key] = value;
]
DictKeys = Function[
{
dict
},
res = {};
ForEach[DownValues[dict], Function[{dictKeyDescr},
res = Append[res, ((dictKeyDescr[[1]]) /. dict -> neverUsedSymbolWhatever)[[1, 1]]];
]];
res
]
DictValues = Function[
{
dict
},
res = {};
ForEach[DownValues[dict], Function[{dictKeyDescr},
res = Append[res, dictKeyDescr[[2]]];
]];
res
]
DictKeyValuePairs = Function[
{
dict
},
res = {};
ForEach[DownValues[dict], Function[{dictKeyDescr},
res = Append[res, {((dictKeyDescr[[1]]) /. dict -> neverUsedSymbolWhatever)[[1, 1]], dictKeyDescr[[2]]}];
]];
res
]
ForEach = Function[
{
list,
func
},
len = Length[list];
For[i = 1, i <= len, i++,
func[
list[[i]]
];
];
]
olvidó: ParaCada = Función [ { lista, func }, len = Longitud [lista]; Para [i = 1, i <= len, i ++, func [list [[i]]]; ]; ] – Fiard
puede editar su respuesta para incluir eso. –
Mathematica 10 introduce Asociación, <| k -> v |>
,
<|a -> x, b -> y, c -> z|>
%[b]
y
que es básicamente un contenedor para una lista de reglas: Convertir una lista de reglas para una asociación:
Association[{a -> x, b -> y, c -> z}]
<|a -> x, b -> y, c -> z|>
Convierta una asociación a una lista de reglas:
Normal[<|a -> x, b -> y, c -> z|>]
{a -> x, b -> y, c -> z}
- 1. Wolfram Workbench y Mathematica Help System
- 2. Manera de manejar archivos de datos grandes en Wolfram Mathematica
- 3. ¿jQuery tiene una estructura de datos mutable de tipo hashtable?
- 4. ¿Cómo funciona Wolfram Alpha?
- 5. ¿Tipo de datos de estructura en Mathematica?
- 6. El paquete de Redes neuronales en Wolfram Mathematica no es paralelo?
- 7. Mathematica y GAP: ¿Hay una interfaz?
- 8. R a Wolfram Alpha
- 9. Mathematica .Net/Link en una aplicación Asp.Net
- 10. Estructura en una estructura
- 11. ¿hay alguna diferencia entre una estructura en C++ y una estructura en C#?
- 12. Regla 34 de Wolfram en XKCD
- 13. ¿Cuánta memoria usa una Hashtable?
- 14. ¿hashtable de actualización por otra hashtable?
- 15. ¿Podemos escribir una Hashtable en un archivo?
- 16. Implementación de Hashtable
- 17. ¿Cómo invocar una función de matlab desde mathematica?
- 18. Hashtable en C++?
- 19. Hashtable Hashtable evitar el hashcode negativo
- 20. Strange Sin [x] gráfico en Mathematica
- 21. Mezclar una lista en Mathematica
- 22. MemberQ en Mathematica
- 23. ¿Hay una estructura en Python similar al mapa C++ STL?
- 24. ¿Hay una estructura de datos "Establecer" en .Net?
- 25. cómo serializar hashtable en C#
- 26. ¿Hay alguna manera de almacenar múltiples tipos de datos en una única variable hashtable?
- 27. Enum como clave de HashTable
- 28. cmd.exe powershell HashTable
- 29. Redefinir no conmutativa multiplicación en Mathematica Mathematica
- 30. Cuándo utilizar un HashTable
Esta respuesta se merece varios más votos. En mi humilde opinión, casi siempre es mejor usar estructuras listas para usar que construir las propias. Pero 'Pillsy' también ha dado una muy buena respuesta. – Shredderroy