Concordancia de patrones con asociaciones
La versión 11 introduce varias funciones para simplificar la manipulación y concordancia de patrones de asociaciones.
Utilice KeyMemberQ y KeyFreeQ para probar si una clave es o no parte de una asociación.
In[1]:=
![Click for copyable input](assets.es/pattern-matching-with-associations/In_74.png)
KeyMemberQ[<|a -> 1, b -> 2, c -> 3|>, a]
Out[1]=
![](assets.es/pattern-matching-with-associations/O_77.png)
In[2]:=
![Click for copyable input](assets.es/pattern-matching-with-associations/In_75.png)
KeyFreeQ[<|a -> 1, b -> 2, c -> 3|>, a]
Out[2]=
![](assets.es/pattern-matching-with-associations/O_78.png)
KeyValuePattern le permite concordar una asociación completa que contenga una o más reglas dadas.
In[3]:=
![Click for copyable input](assets.es/pattern-matching-with-associations/In_76.png)
MatchQ[<|a -> 1, b -> 2, c -> 3|>, KeyValuePattern[b -> _]]
Out[3]=
![](assets.es/pattern-matching-with-associations/O_79.png)
In[4]:=
![Click for copyable input](assets.es/pattern-matching-with-associations/In_77.png)
MatchQ[<|a -> 1, b -> 2, c -> 3|>, KeyValuePattern[{c -> _, a -> _}]]
Out[4]=
![](assets.es/pattern-matching-with-associations/O_80.png)
Calcule datos en el campo gravitacional en varios puntos de la Tierra.
In[5]:=
![Click for copyable input](assets.es/pattern-matching-with-associations/In_78.png)
points = {{40, -100, 691}, {30, -120, 560}, {80, 70, 91}};
data = GeogravityModelData /@ points
Out[5]=
![](assets.es/pattern-matching-with-associations/O_81.png)
Seleccione los casos en los cuales la magnitud del campo es mayor que el valor promedio estándar.
In[6]:=
![Click for copyable input](assets.es/pattern-matching-with-associations/In_79.png)
Cases[data,
KeyValuePattern[
"Magnitude" -> _?(GreaterThan[
Quantity[1, "StandardAccelerationOfGravity"]])]]
Out[6]=
![](assets.es/pattern-matching-with-associations/O_82.png)
Utilice KeyValueMap para procesar más allá cada par de clave-valor.
In[7]:=
![Click for copyable input](assets.es/pattern-matching-with-associations/In_80.png)
Cases[data,
KeyValuePattern[
"Magnitude" -> _?(GreaterThan[
Quantity[1, "StandardAccelerationOfGravity"]])]];
KeyValueMap[
EntityProperty["GeogravityModel", #1] ->
UnitConvert[#2, "Imperial"] &, First[%]]
Out[7]=
![](assets.es/pattern-matching-with-associations/O_83.png)