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]:=
![Click for copyable input](assets.de/pattern-matching-with-associations/In_72.png)
KeyMemberQ[<|a -> 1, b -> 2, c -> 3|>, a]
Out[1]=
![](assets.de/pattern-matching-with-associations/O_75.png)
In[2]:=
![Click for copyable input](assets.de/pattern-matching-with-associations/In_73.png)
KeyFreeQ[<|a -> 1, b -> 2, c -> 3|>, a]
Out[2]=
![](assets.de/pattern-matching-with-associations/O_76.png)
Mit KeyValuePattern können Sie nach einer vollständigen Assoziation suchen, die eine oder mehreren bestimmte Regeln hat.
In[3]:=
![Click for copyable input](assets.de/pattern-matching-with-associations/In_74.png)
MatchQ[<|a -> 1, b -> 2, c -> 3|>, KeyValuePattern[b -> _]]
Out[3]=
![](assets.de/pattern-matching-with-associations/O_77.png)
In[4]:=
![Click for copyable input](assets.de/pattern-matching-with-associations/In_75.png)
MatchQ[<|a -> 1, b -> 2, c -> 3|>, KeyValuePattern[{c -> _, a -> _}]]
Out[4]=
![](assets.de/pattern-matching-with-associations/O_78.png)
Berechnen Sie Daten zum Gravitationsfeld an mehreren Punkten auf der Erde.
In[5]:=
![Click for copyable input](assets.de/pattern-matching-with-associations/In_76.png)
points = {{40, -100, 691}, {30, -120, 560}, {80, 70, 91}};
data = GeogravityModelData /@ points
Out[5]=
![](assets.de/pattern-matching-with-associations/O_79.png)
Wählen Sie die Fälle aus, in denen die Feldstärke größer ist als der Durchschnittswert.
In[6]:=
![Click for copyable input](assets.de/pattern-matching-with-associations/In_77.png)
Cases[data,
KeyValuePattern[
"Magnitude" -> _?(GreaterThan[
Quantity[1, "StandardAccelerationOfGravity"]])]]
Out[6]=
![](assets.de/pattern-matching-with-associations/O_80.png)
Verwenden Sie KeyValueMap, um jedes Schlüssel-Wert-Paar weiter zu verarbeiten.
In[7]:=
![Click for copyable input](assets.de/pattern-matching-with-associations/In_78.png)
Cases[data,
KeyValuePattern[
"Magnitude" -> _?(GreaterThan[
Quantity[1, "StandardAccelerationOfGravity"]])]];
KeyValueMap[
EntityProperty["GeogravityModel", #1] ->
UnitConvert[#2, "Imperial"] &, First[%]]
Out[7]=
![](assets.de/pattern-matching-with-associations/O_81.png)