Blog List View

Mathematica 10 中文版新特性 02_Association 关联 

2015-09-11 11:14:14
1551 次阅读

blob.png

Association 关联

与列表一样,关联是 Wolfram 语言中的基本概念. 它们将键值与数值相关联,允许对乃至数百万的元素进行高效查找和更新. 关联提供了对符号索引列表、关联数组、字典、哈希图表、结构体以及各种强大的数据结构的支持和推广.


In[3]:= f = Association[a -> x, b -> y]
Out[3]= <|a->x,b->y|>

来看一下树形结构

blob.png

关联的构建

利用嵌套列表来构建关联数组

In[5]:= Association[{{a -> x},b -> y}]
Out[5]= <|a->x,b->y|>

用 AssociationThread

In[6]:= AssociationThread[{a,b},{x,y}]
Out[6]= <|a->x,b->y|>
In[7]:= AssociationThread[{"One","Two","Three"}->Range[3]]
Out[7]= <|One->1,Two->2,Three->3|>

Join 来合并 

Join 用于合并, 注意出现重复 Key 的时候, 只保留最后一个的值

In[8]:= Join[<|a -> x,b -> y, c -> z|>,<|a -> bc ,c -> zp|>]
Out[8]= <|a->bc,b->y,c->zp|>





元素的获取

函数符号的形式

In[9]:= <|a->b|>[a]
Out[9]= b

如果没有此个 Key, 则会返回提示 Missing

In[10]:= <|a->b|>[c]
Out[10]= Missing[KeyAbsent,c]

如果是嵌套的关联数组

In[11]:= <|"a"-><|"b"->x|>,"c"->y|>["a","b"]
Out[11]= x

Lookup 按给出的 Key 检索 Value

In[12]:= Lookup[<|a->b|>,a]
Out[12]= b

Key 如果不存在的话, 会返回 Missing

In[13]:= Lookup[<|a->b|>,b]
Out[13]= Missing[KeyAbsent,b]

可以自定义返回的符号, 如下定义返回的符号为  $Failed 

In[14]:= Lookup[<|a->b|>,b,$Failed]
Out[14]= $Failed

Lookup 的优点: 可以同时检索多个 Key, 且能自定义未检索到的信息

In[15]:= Lookup[<|a->b,c -> d|>,{a,e,c},$Failed]
Out[15]= {b,$Failed,d}

使用 operator form

In[16]:= Lookup[a]@<|a ->1|>
Out[16]= 1

用 Part 的方式来获取 Value

In[17]:= <|a->b,"a"->c|>[["a"]]
Out[17]= c

转用 [] 的方式

In[18]:= <|a->b,"a"->c|>["a"]
Out[18]= c
In[19]:= <|a->b,"a"->c|>[[Key[a]]]
Out[19]= b

如果用下面的方式则不成, 必须是 Key 为字符串才行

In[20]:= <|a->b,"a"->c|>`a`
Part::pkspec1: 表达式 a 不能作为部分指定使用. >>
Out[20]= <|a->b,a->c|>`a`
In[21]:= <|"a"-><|"b"->x|>,"c"->y|>[["a","b"]]
Out[21]= x


结论: Part 的第二个参数只能出现三种情况:  整数, 字符串, 或者 Key[...]


发表评论