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


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow