Les Dictionnaires
Trouvez, accédez et modifiez facilement des données en les associant à des clés uniques.
Les dictionnaires (ou Dictionary) en Swift sont des collections non ordonnées qui stockent des associations entre des clés uniques et des valeurs. Chaque clé est unique et est associée à une seule valeur, permettant d'accéder rapidement aux valeurs via leurs clés respectives. Les dictionnaires sont particulièrement utiles lorsqu'il s'agit de gérer des relations clé-valeur, comme dans les bases de données, les configurations, ou les structures de données indexées.
Déclaration et Initialisation d'un Dictionnaire
Un dictionnaire en Swift est déclaré en utilisant la syntaxe suivante : [KeyType: ValueType], où KeyType est le type des clés, et ValueType est le type des valeurs.
Exemple d'un dictionnaire vide :
var emptyDictionary: [String: Int] = [:] // Un dictionnaire vide avec des clés String et des valeurs Int
Ou en utilisant l'inférence de type :
var scores = [String: Int]() // Un dictionnaire vide qui associe des chaînes à des entiers
Exemple avec des valeurs initiales :
var studentGrades: [String: String] = [
"Alice": "A",
"Bob": "B",
"Charlie": "A"
]
Ou avec inférence de type :
var countryCodes = ["FR": "France", "US": "United States", "JP": "Japan"]
Accéder aux Valeurs d'un Dictionnaire
Pour accéder à une valeur dans un dictionnaire, vous utilisez la clé associée à cette valeur entre crochets []. Le résultat sera optionnel, car la clé peut ne pas exister.
let grade = studentGrades["Alice"] // Retourne "A" optionnel
Vous pouvez également utiliser l'optionnelle pour accéder aux valeurs en toute sécurité :
if let aliceGrade = studentGrades["Alice"] {
print("Alice a obtenu la note \(aliceGrade)")
} else {
print("Pas de note trouvée pour Alice")
}
Ajouter, Modifier et Supprimer des Valeurs
Ajouter ou Modifier une Valeur :
Pour ajouter une nouvelle association ou mettre à jour une valeur existante, vous pouvez simplement utiliser l'opérateur d'affectation (=) avec la clé correspondante.
studentGrades["David"] = "C" // Ajoute une nouvelle association
studentGrades["Bob"] = "A" // Met à jour la valeur associée à la clé "Bob"
Supprimer une Valeur :
Pour supprimer une association, utilisez la méthode removeValue(forKey:).
studentGrades.removeValue(forKey: "Charlie") // Supprime l'entrée pour "Charlie"
Vous pouvez également utiliser nil pour supprimer une entrée :
studentGrades["Bob"] = nil // Supprime l'entrée pour "Bob"
Parcourir un Dictionnaire
Vous pouvez parcourir un dictionnaire en utilisant une boucle for-in, qui permet d'itérer sur les paires clé-valeur.
for (student, grade) in studentGrades {
print("\(student) a obtenu la note \(grade)")
}
Il est également possible de parcourir uniquement les clés ou les valeurs :
for student in studentGrades.keys {
print("Étudiant : \(student)")
}
for grade in studentGrades.values {
print("Note : \(grade)")
}
Propriétés et Méthodes Utiles
count : Retourne le nombre de paires clé-valeur dans le dictionnaire.
print(studentGrades.count) // Affiche le nombre d'entrées
isEmpty : Vérifie si le dictionnaire est vide.
if studentGrades.isEmpty {
print("Le dictionnaire est vide")
}
keys et values : Retourne respectivement les clés et les valeurs sous forme de collections (non ordonnées).
let students = Array(studentGrades.keys) // Tableau des clés (étudiants)
let grades = Array(studentGrades.values) // Tableau des valeurs (notes)
Accès avec Valeurs par Défaut
Swift permet d'accéder à une valeur dans un dictionnaire avec une valeur par défaut en cas de clé inexistante. Cela évite d'avoir à gérer une optionnelle.
let gradeForEve = studentGrades["Eve", default: "Pas de note"]
print(gradeForEve) // Affiche : "Pas de note"
Mise à Jour et Fusion de Dictionnaires
Mise à jour d'un dictionnaire avec un autre :
Swift permet de fusionner deux dictionnaires à l'aide de la méthode merge(_:uniquingKeysWith:). Si les deux dictionnaires ont des clés en commun, vous devez spécifier comment résoudre les conflits.
var otherGrades = ["Charlie": "B", "Eve": "A"]
studentGrades.merge(otherGrades) { (current, new) in new }
print(studentGrades) // Fusionne les dictionnaires
Dictionnaires Immutables
Si vous déclarez un dictionnaire avec let, il devient immuable, c'est-à-dire que vous ne pouvez pas ajouter, supprimer ou modifier ses éléments.
let constantGrades = ["Alice": "A", "Bob": "B"]
// constantGrades["Alice"] = "B" // Erreur : Impossible de modifier un dictionnaire immuable
Conversion entre Types
Vous pouvez facilement convertir un dictionnaire en tableau de clés ou de valeurs, ou manipuler les données pour une transformation spécifique. Les dictionnaires peuvent également être convertis en structures plus complexes en fonction des besoins.
let studentList = Array(studentGrades.keys)
Comparer Deux Dictionnaires
Vous pouvez vérifier si deux dictionnaires sont égaux avec l'opérateur d'égalité (==). Deux dictionnaires sont égaux s'ils contiennent exactement les mêmes paires clé-valeur.
let dictA = ["one": 1, "two": 2]
let dictB = ["two": 2, "one": 1]
if dictA == dictB {
print("Les dictionnaires sont égaux")
}