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]:=
KeyMemberQ[<|a -> 1, b -> 2, c -> 3|>, a]Out[1]=
In[2]:=
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]:=
MatchQ[<|a -> 1, b -> 2, c -> 3|>, KeyValuePattern[b -> _]]Out[3]=
In[4]:=
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]:=
points = {{40, -100, 691}, {30, -120, 560}, {80, 70, 91}};
data = GeogravityModelData /@ pointsOut[5]=

Select the cases for which the field magnitude is larger than the standard average value.
In[6]:=
Cases[data, 
 KeyValuePattern[
  "Magnitude" -> _?(GreaterThan[
      Quantity[1, "StandardAccelerationOfGravity"]])]]Out[6]=

Use KeyValueMap to further process each key-value pair.
In[7]:=

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