Wolfram Mathematica中是否有HashTable结构?

Yon*_*ing 17 wolfram-mathematica hashtable data-structures

我想使用像HashTable这样的结构.Wolfram Mathematica中是否有类似的结构?

Pil*_*lsy 22

更新: Mathematica版本10引入了Association数据结构(教程).


有很多种可能性.如果您不需要在表中添加或删除键或更改其关联值,那么最简单的可能性就是构建一个规则列表,其中左侧是键,右侧是值. - 手边,并使用Dispatch它.

如果确实需要更改表中的条目,可以使用DownValues符号作为哈希表.这将支持通常用于哈希表的所有操作.这是最直接的方式:

(* 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
Run Code Online (Sandbox Code Playgroud)


Joã*_*lva 8

我想说你可以开箱即用的最相似的结构是稀疏数组.


dre*_*ves 5

我同意Pillsy,但也看到了这个答案:

Mathematica Downvalue Lhs

它包括一个方便的函数,用于获取哈希表的键.