Menu
Coddy logo textTech

Mettre à jour des dictionnaires

Fait partie de la section Logique et Flux du Journey Swift de Coddy. Leçon 14 sur 56.

Vous écrivez dans un dictionnaire de la même manière que vous y lisez : avec l'indice.

var prices: [String: Int] = ["apple": 1]
prices["bread"] = 3                // ajoute la clé
prices["apple"] = 2                // met à jour une clé existante
prices["apple"] = nil              // supprime la clé

Deux méthodes nommées font la même chose de manière plus explicite :

prices.updateValue(5, forKey: "milk") // renvoie l'ancienne valeur, ou nil
prices.removeValue(forKey: "bread")  // renvoie la valeur supprimée, ou nil

Les méthodes nommées renvoient la valeur précédente, ce qui est utile lorsque vous avez besoin de savoir si la clé existait déjà.

Le pattern d'indice par défaut de la leçon précédente s'enchaîne parfaitement avec la mutation ; c'est ainsi que vous construisez un compteur sans écrire de if :

var counts: [String: Int] = [:]
for letter in ["a", "b", "a"] {
    counts[letter, default: 0] += 1
}
// counts == ["a": 2, "b": 1]
challenge icon

Défi

Moyen

Lisez une seule ligne d’entrée : une liste d’opérations séparées par des virgules sur un dictionnaire initial. Chaque opération est l’une des suivantes :

  • set:<key>:<value> ajouter ou mettre à jour (la valeur est un entier)
  • add:<key>:<value> ajouter la valeur à celle existante (utilisez le modèle de souscription par défaut)
  • del:<key> supprimer la clé

Après avoir appliqué chaque opération dans l’ordre à un [String: Int] initialement vide, affichez les clés dans l’ordre alphabétique, une par ligne, au format <key>=<value>.

Pour l’entrée set:a:5,add:a:3,set:b:1,del:b,add:c:2, la sortie est :

a=8
c=2

Essayez vous-même

let ops = readLine()!.components(separatedBy: ",")
var dict: [String: Int] = [:]

// TODO: analyser chaque op et appliquer set/add/del ; afficher les clés triées avec leurs valeurs
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique et Flux

Entraînez-vous par vous-même : Playground Swift