Wolfram Language

Core Language

Pattern Matching with Associations

Version 11 introduces several functions to simplify the manipulation and pattern matching of associations.

Use KeyMemberQ and KeyFreeQ to test whether or not a key is part of an association.

In[1]:=
Click for copyable input
KeyMemberQ[<|a -> 1, b -> 2, c -> 3|>, a]
Out[1]=
In[2]:=
Click for copyable input
KeyFreeQ[<|a -> 1, b -> 2, c -> 3|>, a]
Out[2]=

KeyValuePattern allows you to match a complete association that contains one or more given rules.

In[3]:=
Click for copyable input
MatchQ[<|a -> 1, b -> 2, c -> 3|>, KeyValuePattern[b -> _]]
Out[3]=
In[4]:=
Click for copyable input
MatchQ[<|a -> 1, b -> 2, c -> 3|>, KeyValuePattern[{c -> _, a -> _}]]
Out[4]=

Compute data on the gravitational field at several points of the Earth.

In[5]:=
Click for copyable input
points = {{40, -100, 691}, {30, -120, 560}, {80, 70, 91}}; data = GeogravityModelData /@ points
Out[5]=

Select the cases for which the field magnitude is larger than the standard average value.

In[6]:=
Click for copyable input
Cases[data, KeyValuePattern[ "Magnitude" -> _?(GreaterThan[ Quantity[1, "StandardAccelerationOfGravity"]])]]
Out[6]=

Use KeyValueMap to further process each key-value pair.

In[7]:=
Click for copyable input
Cases[data, KeyValuePattern[ "Magnitude" -> _?(GreaterThan[ Quantity[1, "StandardAccelerationOfGravity"]])]]; KeyValueMap[ EntityProperty["GeogravityModel", #1] -> UnitConvert[#2, "Imperial"] &, First[%]]
Out[7]=

Related Examples

de es fr ja ko pt-br ru zh