# Wolfram 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]:=
`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 /@ points```
Out[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]=