Ricerca…


introduzione

Un dizionario rappresenta una raccolta di chiavi e valori. Vedi la classe MSDN Dictionary (Tkey, TValue) .

Passa attraverso un dizionario e stampa tutte le voci

Ogni coppia nel dizionario è un'istanza di KeyValuePair con gli stessi parametri del dizionario. Quando esegui il looping del dizionario con For Each , ogni iterazione ti assegnerà una delle coppie di valori-chiave memorizzate nel dizionario.

For Each kvp As KeyValuePair(Of String, String) In currentDictionary
  Console.WriteLine("{0}: {1}", kvp.Key, kvp.Value)
Next

Crea un dizionario pieno di valori

Dim extensions As New Dictionary(Of String, String) _
  from { { "txt", "notepad" },
  { "bmp", "paint" },
  { "doc", "winword" } }

Questo crea un dizionario e lo riempie immediatamente con tre KeyValuePairs.

Puoi anche aggiungere nuovi valori in seguito utilizzando il metodo Aggiungi:

extensions.Add("png", "paint")

Si noti che la chiave (il primo parametro) deve essere univoca nel dizionario, altrimenti verrà generata un'eccezione.

Ottenere un valore di dizionario

Puoi ottenere il valore di una voce nel dizionario usando la proprietà 'Articolo':

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"

Se la chiave non è presente nel dizionario, verrà lanciata una KeyNotFoundException.

Verifica della chiave già presente nel dizionario - riduzione dei dati

Il metodo ConstainsKey è il modo per sapere se una chiave esiste già nel Dizionario.

Questo è utile per la riduzione dei dati. Nell'esempio seguente, ogni volta che incontriamo una nuova parola, la aggiungiamo come chiave nel dizionario, altrimenti incrementiamo il contatore per questa parola specifica.

 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

Esempio di riduzione XML: acquisizione di tutti i nomi e l'occorrenza dei nodi figlio in un ramo di 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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow