Recherche…


Introduction

Un dictionnaire représente une collection de clés et de valeurs. Voir la classe Dictionnaire MSDN (Tkey, TValue) .

Traverser un dictionnaire et imprimer toutes les entrées

Chaque paire du dictionnaire est une instance de KeyValuePair avec les mêmes paramètres de type que le dictionnaire. Lorsque vous parcourez le dictionnaire avec For Each , chaque itération vous donnera l'une des paires clé-valeur stockées dans le dictionnaire.

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

Créer un dictionnaire rempli de valeurs

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

Cela crée un dictionnaire et le remplit immédiatement avec trois KeyValuePairs.

Vous pouvez également ajouter de nouvelles valeurs ultérieurement en utilisant la méthode Add:

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

Notez que la clé (le premier paramètre) doit être unique dans le dictionnaire, sinon une exception sera lancée.

Obtenir une valeur de dictionnaire

Vous pouvez obtenir la valeur d'une entrée dans le dictionnaire en utilisant la propriété 'Item':

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 clé n'est pas présente dans le dictionnaire, une exception KeyNotFoundException sera lancée.

Vérification de la clé déjà dans le dictionnaire - réduction des données

La méthode ConstainsKey est le moyen de savoir si une clé existe déjà dans le dictionnaire.

Cela est pratique pour la réduction des données. Dans l'exemple ci-dessous, chaque fois que nous rencontrons un nouveau mot, nous l'ajoutons en tant que clé dans le dictionnaire, sinon nous incrémentons le compteur pour ce mot spécifique.

 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

Exemple de réduction XML: obtenir tous les noms de nœuds enfants et leur occurrence dans une branche d'un document 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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow