Pattern Matching mit Assoziationen
In Version 11 werden einige Funktion eingeführt, die die Bearbeitung und musterbasierte Suche von Assoziationen vereinfachen.
Testen Sie mit KeyMemberQ und KeyFreeQ, ob ein Schlüssel Teil einer Assoziation ist.
In[1]:=
KeyMemberQ[<|a -> 1, b -> 2, c -> 3|>, a]
Out[1]=
In[2]:=
KeyFreeQ[<|a -> 1, b -> 2, c -> 3|>, a]
Out[2]=
Mit KeyValuePattern können Sie nach einer vollständigen Assoziation suchen, die eine oder mehreren bestimmte Regeln hat.
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]=
Berechnen Sie Daten zum Gravitationsfeld an mehreren Punkten auf der Erde.
In[5]:=
points = {{40, -100, 691}, {30, -120, 560}, {80, 70, 91}};
data = GeogravityModelData /@ points
Out[5]=
Wählen Sie die Fälle aus, in denen die Feldstärke größer ist als der Durchschnittswert.
In[6]:=
Cases[data,
KeyValuePattern[
"Magnitude" -> _?(GreaterThan[
Quantity[1, "StandardAccelerationOfGravity"]])]]
Out[6]=
Verwenden Sie KeyValueMap, um jedes Schlüssel-Wert-Paar weiter zu verarbeiten.
In[7]:=
Cases[data,
KeyValuePattern[
"Magnitude" -> _?(GreaterThan[
Quantity[1, "StandardAccelerationOfGravity"]])]];
KeyValueMap[
EntityProperty["GeogravityModel", #1] ->
UnitConvert[#2, "Imperial"] &, First[%]]
Out[7]=