Recherche…


Remarques

Certains exemples de cette rubrique peuvent avoir un ordre différent lorsqu'ils sont utilisés, car l'ordre du dictionnaire n'est pas garanti.

Déclaration de dictionnaires

Les dictionnaires sont une collection non ordonnée de clés et de valeurs. Les valeurs se rapportent à des clés uniques et doivent être du même type.

Lors de l'initialisation d'un dictionnaire, la syntaxe complète est la suivante:

var books : Dictionary<Int, String> = Dictionary<Int, String>()

Bien que ce soit un moyen plus concis d'initialiser:

var books = [Int: String]()
// or
var books: [Int: String] = [:]

Déclarez un dictionnaire avec des clés et des valeurs en les spécifiant dans une liste séparée par des virgules. Les types peuvent être déduits des types de clés et de valeurs.

var books: [Int: String] = [1: "Book 1", 2: "Book 2"]
//books = [2: "Book 2", 1: "Book 1"] 
var otherBooks = [3: "Book 3", 4: "Book 4"]
//otherBooks = [3: "Book 3", 4: "Book 4"]

Modification des dictionnaires

Ajouter une clé et une valeur à un dictionnaire

var books = [Int: String]()
//books = [:]
books[5] = "Book 5"
//books = [5: "Book 5"]
books.updateValue("Book 6", forKey: 5)
//[5: "Book 6"]

updateValue renvoie la valeur d'origine s'il en existe une ou nulle.

let previousValue = books.updateValue("Book 7", forKey: 5)
//books = [5: "Book 7"]
//previousValue = "Book 6"

Supprimer la valeur et leurs clés avec une syntaxe similaire

books[5] = nil
//books [:]
books[6] = "Deleting from Dictionaries"
//books = [6: "Deleting from Dictionaries"]
let removedBook = books.removeValueForKey(6)
//books = [:]
//removedValue = "Deleting from Dictionaries"

Accès aux valeurs

Une valeur dans un Dictionary est accessible à l'aide de sa clé:

var books: [Int: String] = [1: "Book 1", 2: "Book 2"]
let bookName = books[1]
//bookName = "Book 1"

Les valeurs d'un dictionnaire peuvent être itérées à l'aide de la propriété values :

for book in books.values {
    print("Book Title: \(book)")
}
//output: Book Title: Book 2
//output: Book Title: Book 1

De même, les clés d'un dictionnaire peuvent être itérées en utilisant sa propriété keys :

for bookNumbers in books.keys {
    print("Book number: \(bookNumber)")
}
// outputs:
// Book number: 1
// Book number: 2

Pour obtenir toutes key paires de key et de value correspondant les unes aux autres (vous n'obtiendrez pas le bon ordre car il s'agit d'un dictionnaire)

for (book,bookNumbers)in books{
print("\(book)  \(bookNumbers)")
}
// outputs:
// 2  Book 2
// 1  Book 1

Notez qu'un Dictionary , contrairement à un Array , par nature non ordonné, c'est-à-dire qu'il n'y a aucune garantie sur la commande pendant l'itération.

Si vous souhaitez accéder à plusieurs niveaux d'un dictionnaire, utilisez une syntaxe d'indice répétée.

// Create a multilevel dictionary.
var myDictionary: [String:[Int:String]]! = ["Toys":[1:"Car",2:"Truck"],"Interests":[1:"Science",2:"Math"]]

print(myDictionary["Toys"][2]) // Outputs "Truck"
print(myDictionary["Interests"][1]) // Outputs "Science"

Modifier la valeur du dictionnaire à l'aide de la clé

var dict = ["name": "John", "surname": "Doe"]
// Set the element with key: 'name' to 'Jane'
dict["name"] = "Jane"
print(dict)

Obtenir toutes les clés dans le dictionnaire

let myAllKeys = ["name" : "Kirit" , "surname" : "Modi"]
let allKeys = Array(myAllKeys.keys)
print(allKeys)

Fusionner deux dictionnaires

extension Dictionary {
    func merge(dict: Dictionary<Key,Value>) -> Dictionary<Key,Value> {
        var mutableCopy = self
        for (key, value) in dict {
            // If both dictionaries have a value for same key, the value of the other dictionary is used.
            mutableCopy[key] = value
        }
        return mutableCopy
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow