Filtrage par motif avec les associations
La version 11 introduit plusieurs fonctions pour simplifier la manipulation et le filtrage par motif des associations.
Utilisez KeyMemberQ et KeyFreeQ pour tester si oui ou non une clé fait partie d'une association.
In[1]:=
![Click for copyable input](assets.fr/pattern-matching-with-associations/In_72.png)
KeyMemberQ[<|a -> 1, b -> 2, c -> 3|>, a]
Out[1]=
![](assets.fr/pattern-matching-with-associations/O_75.png)
In[2]:=
![Click for copyable input](assets.fr/pattern-matching-with-associations/In_73.png)
KeyFreeQ[<|a -> 1, b -> 2, c -> 3|>, a]
Out[2]=
![](assets.fr/pattern-matching-with-associations/O_76.png)
KeyValuePattern vous permet de faire correspondre une association complète contenant une ou plusieurs règles données.
In[3]:=
![Click for copyable input](assets.fr/pattern-matching-with-associations/In_74.png)
MatchQ[<|a -> 1, b -> 2, c -> 3|>, KeyValuePattern[b -> _]]
Out[3]=
![](assets.fr/pattern-matching-with-associations/O_77.png)
In[4]:=
![Click for copyable input](assets.fr/pattern-matching-with-associations/In_75.png)
MatchQ[<|a -> 1, b -> 2, c -> 3|>, KeyValuePattern[{c -> _, a -> _}]]
Out[4]=
![](assets.fr/pattern-matching-with-associations/O_78.png)
Calculez les données du champ gravitationnel en plusieurs points de la Terre.
In[5]:=
![Click for copyable input](assets.fr/pattern-matching-with-associations/In_76.png)
points = {{40, -100, 691}, {30, -120, 560}, {80, 70, 91}};
data = GeogravityModelData /@ points
Out[5]=
![](assets.fr/pattern-matching-with-associations/O_79.png)
Sélectionnez les cas pour lesquels l'amplitude du champ est supérieure à la valeur moyenne standard.
In[6]:=
![Click for copyable input](assets.fr/pattern-matching-with-associations/In_77.png)
Cases[data,
KeyValuePattern[
"Magnitude" -> _?(GreaterThan[
Quantity[1, "StandardAccelerationOfGravity"]])]]
Out[6]=
![](assets.fr/pattern-matching-with-associations/O_80.png)
Utilisez KeyValueMap pour continuer à traiter chaque paire clé-valeur.
In[7]:=
![Click for copyable input](assets.fr/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.fr/pattern-matching-with-associations/O_81.png)