Swift - Dictionnaires
Swift 4 dictionariessont utilisés pour stocker des listes non ordonnées de valeurs du même type. Swift 4 met une vérification stricte qui ne vous permet pas de saisir un mauvais type dans un dictionnaire, même par erreur.
Les dictionnaires Swift 4 utilisent un identifiant unique appelé keypour stocker une valeur qui pourra être référencée ultérieurement et recherchée via la même clé. Contrairement aux éléments d'un tableau, les éléments d'undictionaryn'ont pas d'ordre spécifié. Vous pouvez utiliser undictionary lorsque vous devez rechercher des valeurs en fonction de leurs identifiants.
Une clé de dictionnaire peut être un entier ou une chaîne sans restriction, mais elle doit être unique dans un dictionnaire.
Si vous affectez un dictionnaire créé à une variable, il est toujours modifiable, ce qui signifie que vous pouvez le modifier en ajoutant, supprimant ou modifiant ses éléments. Mais si vous affectez un dictionnaire à une constante, ce dictionnaire est immuable et sa taille et son contenu ne peuvent pas être modifiés.
Création d'un dictionnaire
Vous pouvez créer un dictionnaire vide d'un certain type en utilisant la syntaxe d'initialisation suivante -
var someDict = [KeyType: ValueType]()
Vous pouvez utiliser la syntaxe simple suivante pour créer un dictionnaire vide dont la clé sera de type Int et les valeurs associées seront des chaînes -
var someDict = [Int: String]()
Voici un exemple pour créer un dictionnaire à partir d'un ensemble de valeurs données -
var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
Initialisation basée sur la séquence
Swift 4 vous permet de créer un dictionnaire à partir de tableaux (paires clé-valeur).
var cities = [“Delhi”,”Bangalore”,”Hyderabad”]
Vous pouvez utiliser la syntaxe simple suivante pour créer un dictionnaire vide dont la clé sera de type Int et les valeurs associées seront des chaînes -
var Distance = [2000,10, 620]
Voici un exemple pour créer un dictionnaire à partir d'un ensemble de valeurs données -
let cityDistanceDict = Dictionary(uniqueKeysWithValues: zip(cities, Distance))
Les lignes de code ci-dessus créeront un dictionnaire avec les villes comme clé et la distance comme valeur -
Filtration
Swift 4 vous permet de filtrer les valeurs d'un dictionnaire.
var closeCities = cityDistanceDict.filter { $0.value < 1000 }
Si nous exécutons le code ci-dessus, notre dictionnaire closeCities sera.
["Bangalore" : 10 , "Hyderabad" : 620]
Regroupement de dictionnaires
Swift 4 vous permet de créer un regroupement de valeurs de dictionnaire.
var cities = ["Delhi","Bangalore","Hyderabad","Dehradun","Bihar"]
Vous pouvez utiliser la syntaxe simple suivante pour regrouper les valeurs du dictionnaire en fonction du premier alphabet.
var GroupedCities = Dictionary(grouping: cities ) { $0.first! }
Le résultat du code ci-dessus sera
["D" :["Delhi","Dehradun"], "B" : ["Bengaluru","Bihar"], "H" : ["Hyderabad"]]
Accéder aux dictionnaires
Vous pouvez récupérer une valeur d'un dictionnaire à l'aide de la syntaxe d'indice, en passant la clé de la valeur que vous souhaitez récupérer entre crochets immédiatement après le nom du dictionnaire comme suit -
var someVar = someDict[key]
Vérifions l'exemple suivant pour créer, initialiser et accéder aux valeurs d'un dictionnaire -
var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var someVar = someDict[1]
print( "Value of key = 1 is \(someVar)" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -
Value of key = 1 is Optional("One")
Value of key = 2 is Optional("Two")
Value of key = 3 is Optional("Three")
Modifier les dictionnaires
Vous pouvez utiliser updateValue(forKey:)méthode pour ajouter une valeur existante à une clé donnée du dictionnaire. Cette méthode renvoie une valeur facultative du type de valeur du dictionnaire. Voici un exemple simple -
var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var oldVal = someDict.updateValue("New value of one", forKey: 1)
var someVar = someDict[1]
print( "Old value of key = 1 is \(oldVal)" )
print( "Value of key = 1 is \(someVar)" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -
Old value of key = 1 is Optional("One")
Value of key = 1 is Optional("New value of one")
Value of key = 2 is Optional("Two")
Value of key = 3 is Optional("Three")
Vous pouvez modifier un élément existant d'un dictionnaire en attribuant une nouvelle valeur à une clé donnée, comme indiqué dans l'exemple suivant -
var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var oldVal = someDict[1]
someDict[1] = "New value of one"
var someVar = someDict[1]
print( "Old value of key = 1 is \(oldVal)" )
print( "Value of key = 1 is \(someVar)" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -
Old value of key = 1 is Optional("One")
Value of key = 1 is Optional("New value of one")
Value of key = 2 is Optional("Two")
Value of key = 3 is Optional("Three")
Supprimer les paires clé-valeur
Vous pouvez utiliser removeValueForKey()pour supprimer une paire clé-valeur d'un dictionnaire. Cette méthode supprime la paire clé-valeur si elle existe et renvoie la valeur supprimée, ou renvoie nil si aucune valeur n'existe. Voici un exemple simple -
var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var removedValue = someDict.removeValue(forKey: 2)
print( "Value of key = 1 is \(someDict[1])" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -
Value of key = 1 is Optional("One")
Value of key = 2 is nil
Value of key = 3 is Optional("Three")
Vous pouvez également utiliser la syntaxe d'indice pour supprimer une paire clé-valeur d'un dictionnaire en attribuant une valeur de nilpour cette clé. Voici un exemple simple -
var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
someDict[2] = nil
print( "Value of key = 1 is \(someDict[1])" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -
Value of key = 1 is Optional("One")
Value of key = 2 is nil
Value of key = 3 is Optional("Three")
Itérer sur un dictionnaire
Vous pouvez utiliser un for-in boucle pour parcourir l'ensemble des paires clé-valeur dans un dictionnaire, comme illustré dans l'exemple suivant -
var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
for (index, keyValue) in someDict.enumerated() {
print("Dictionary key \(index) - Dictionary value \(keyValue)")
}
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -
Dictionary key 2 - Dictionary value Two
Dictionary key 3 - Dictionary value Three
Dictionary key 1 - Dictionary value One
Vous pouvez utiliser enumerate() fonction qui renvoie l'index de l'élément avec sa paire (clé, valeur) comme indiqué ci-dessous dans l'exemple -
var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
for (key, value) in someDict.enumerated() {
print("Dictionary key \(key) - Dictionary value \(value)")
}
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -
Dictionary key 0 - Dictionary value (key: 2, value: "Two")
Dictionary key 1 - Dictionary value (key: 3, value: "Three")
Dictionary key 2 - Dictionary value (key: 1, value: "One")
Convertir en tableaux
Vous pouvez extraire une liste de paires clé-valeur d'un dictionnaire donné pour créer des tableaux séparés pour les clés et les valeurs. Voici un exemple -
var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
let dictKeys = [Int](someDict.keys)
let dictValues = [String](someDict.values)
print("Print Dictionary Keys")
for (key) in dictKeys {
print("\(key)")
}
print("Print Dictionary Values")
for (value) in dictValues {
print("\(value)")
}
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -
Print Dictionary Keys
2
3
1
Print Dictionary Values
Two
Three
One
La propriété count
Vous pouvez utiliser la lecture seule count propriété d'un dictionnaire pour connaître le nombre d'éléments dans un dictionnaire comme indiqué ci-dessous -
var someDict1:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var someDict2:[Int:String] = [4:"Four", 5:"Five"]
print("Total items in someDict1 = \(someDict1.count)")
print("Total items in someDict2 = \(someDict2.count)")
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -
Total items in someDict1 = 3
Total items in someDict2 = 2
La propriété vide
Vous pouvez utiliser en lecture seule empty propriété d'un dictionnaire pour savoir si un dictionnaire est vide ou non, comme indiqué ci-dessous -
var someDict1:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var someDict2:[Int:String] = [4:"Four", 5:"Five"]
var someDict3:[Int:String] = [Int:String]()
print("someDict1 = \(someDict1.isEmpty)")
print("someDict2 = \(someDict2.isEmpty)")
print("someDict3 = \(someDict3.isEmpty)")
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -
someDict1 = false
someDict2 = false
someDict3 = true