Visual Basic .NET Language
Los diccionarios
Buscar..
Introducción
Un diccionario representa una colección de claves y valores. Ver Clase de diccionario MSDN (Tkey, TValue) .
Recorrer un diccionario e imprimir todas las entradas
Cada par en el diccionario es una instancia de KeyValuePair
con los mismos parámetros de tipo que el diccionario. Cuando recorre el diccionario con For Each
, cada iteración le proporcionará uno de los pares clave-valor almacenados en el diccionario.
For Each kvp As KeyValuePair(Of String, String) In currentDictionary
Console.WriteLine("{0}: {1}", kvp.Key, kvp.Value)
Next
Crear un diccionario lleno de valores.
Dim extensions As New Dictionary(Of String, String) _
from { { "txt", "notepad" },
{ "bmp", "paint" },
{ "doc", "winword" } }
Esto crea un diccionario y lo llena inmediatamente con tres KeyValuePairs.
También puede agregar nuevos valores más adelante usando el método Agregar:
extensions.Add("png", "paint")
Tenga en cuenta que la clave (el primer parámetro) debe ser única en el diccionario, de lo contrario se lanzará una excepción.
Obtener un valor de diccionario
Puede obtener el valor de una entrada en el diccionario usando la propiedad 'Artículo':
Dim extensions As New Dictionary(Of String, String) From {
{ "txt", "notepad" },
{ "bmp", "paint" },
{ "doc", "winword" }
}
Dim program As String = extensions.Item("txt") 'will be "notepad"
' alternative syntax as Item is the default property (a.k.a. indexer)
Dim program As String = extensions("txt") 'will be "notepad"
' other alternative syntax using the (rare)
' dictionary member access operator (a.k.a. bang operator)
Dim program As String = extensions!txt 'will be "notepad"
Si la clave no está presente en el diccionario, se lanzará una excepción KeyNotFoundException.
Buscando clave ya en el diccionario - reducción de datos
El método ConstainsKey
es la forma de saber si ya existe una clave en el Diccionario.
Esto es útil para la reducción de datos. En el ejemplo siguiente, cada vez que encontramos una nueva palabra, la agregamos como clave en el diccionario, de lo contrario, incrementamos el contador para esta palabra específica.
Dim dic As IDictionary(Of String, Integer) = New Dictionary(Of String, Integer)
Dim words As String() = Split(<big text source>," ", -1, CompareMethod.Binary)
For Each str As String In words
If dic.ContainsKey(str) Then
dic(str) += 1
Else
dic.Add(str, 1)
End If
Next
Ejemplo de reducción de XML: obtener todos los nombres de los nodos secundarios y la aparición en una rama de un documento XML
Dim nodes As IDictionary(Of String, Integer) = New Dictionary(Of String, Integer)
Dim xmlsrc = New XmlDocument()
xmlsrc.LoadXml(<any text stream source>)
For Each xn As XmlNode In xmlsrc.FirstChild.ChildNodes 'selects the proper parent
If nodes.ContainsKey(xn.Name) Then
nodes(xn.Name) += 1
Else
nodes.Add(xn.Name, 1)
End If
Next