Grouper des valeurs
Fait partie de la section Logique et Flux du Journey Swift de Coddy. Leçon 16 sur 56.
Le modèle d’indice par défaut est la base de deux formes courantes.
Compteur de fréquences : compter combien de fois chaque clé apparaît.
let letters = ["a", "b", "a", "c", "a"]
var counts: [String: Int] = [:]
for letter in letters {
counts[letter, default: 0] += 1
}
// counts == ["a": 3, "b": 1, "c": 1]Regroupement : collecter les valeurs sous une clé dérivée :
let words = ["hi", "hello", "yo", "hey"]
var byLength: [Int: [String]] = [:]
for w in words {
byLength[w.count, default: []].append(w)
}
// [2: ["hi", "yo"], 5: ["hello"], 3: ["hey"]]La valeur par défaut pour le cas de regroupement est un tableau vide. La valeur default: est utilisée uniquement lorsque la clé est manquante, puis le membre de droite modifie l’entrée sur place.
Défi
MoyenLisez une seule ligne d’entrée : une liste de mots séparés par des virgules.
Affichez, dans cet ordre :
- Une ligne par longueur de mot présente dans l’entrée, triée de la plus courte à la plus longue, au format
<length>: <count>, oùcountindique combien de mots de cette longueur apparaissent Most common length: <n>, oùnest la longueur ayant le plus grand nombre d’occurrences. En cas d’égalité, choisissez la longueur la plus courte.
Pour l’entrée hi,hello,yo,hey,bonjour,bye, la sortie est :
2: 2
3: 2
5: 1
7: 1
Most common length: 2(Les longueurs 2 et 3 apparaissent toutes deux deux fois. En cas d’égalité, la plus courte est choisie, donc 2 gagne.)
Essayez vous-même
let words = readLine()!.components(separatedBy: ",")
// TODO: compter les mots par longueur ; imprimer triés ; imprimer le plus fréquent (égalités : plus court)
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
1Les chaînes de caractères en profondeur
Comptage et indicesCasse et nettoyageRecherche dans les chaînesDécoupage et jointureRemplacement de sous-chaînesRécapitulatif - Vérification du nom d'utilisateur4Ensembles
Création d'ensemblesUnion et intersectionSoustraction et différence symétriqueSous-ensemble et sur-ensembleRécapitulatif - Filtre de tags7Projet - Suivi d'habitudes
Aperçu du projetMarquer comme terminé10Projet - Moteur de quiz
Présentation du projetPoser des questions2Intervalles et Pas
Fermé vs Semi-ouvertLe PasMéthodes d'intervalleIntervalles dans un SwitchRécapitulatif - Grille de calendrier5Fonctions d'ordre supérieur, Partie 1
MapFilterReduceChaînage de map, filter, reduceRécapitulatif - Statistiques de mots3Dictionnaires
Déclarer des dictionnairesRecherche optionnelleMettre à jour des dictionnairesParcourir des dictionnairesGrouper des valeursRécapitulatif - Inventaire6Fonctions d'ordre supérieur, partie 2
compactMapflatMapsorted(by:)Construction de pipelinesRécapitulatif - Tableau de classementEntraînez-vous par vous-même : Playground Swift