Je veux trier un dictionnaire dans Swift. J'ai un dictionnaire comme:
"A" => Array[]
"Z" => Array[]
"D" => Array[]
etc. Je veux que ce soit comme
"A" => Array[]
"D" => Array[]
"Z" => Array[]
etc.
J'ai essayé de nombreuses solutions sur SO mais personne n'a fonctionné pour moi. J'utilise XCode6 Beta 5 et certains donnent des erreurs de compilation et certaines solutions donnent des exceptions. Donc, quiconque peut publier la copie de travail du tri du dictionnaire.
swift
sorting
dictionary
Aleem Ahmad
la source
la source
sortedKeys
fonction.Réponses:
ÉDITER:
Le tableau trié à partir du code ci-dessus contient uniquement des clés, tandis que les valeurs doivent être extraites du dictionnaire d'origine. Cependant,
'Dictionary'
est également une'CollectionType'
paire de (clé, valeur) et nous pouvons utiliser la'sorted'
fonction globale pour obtenir un tableau trié contenant à la fois des clés et des valeurs, comme ceci:EDIT2: La syntaxe Swift changeante mensuellement préfère actuellement
Le global
sorted
est obsolète.la source
let sortedKeys = dictionary.keys.sorted()
Swift 2.0
Version mise à jour de la réponse d'Ivica M:
Swift 3
Remarquer:
Ne soyez pas surpris que le type résultant soit un tableau plutôt qu'un dictionnaire. Les dictionnaires ne peuvent pas être triés ! Le type de données résultant est un tableau trié, tout comme dans la réponse de @ Ivica.
la source
Binary operator > can not be compared to two
Any` opérandes. Downcasting ne fonctionne pas non plusSi vous souhaitez parcourir à la fois les clés et les valeurs dans un ordre trié par clé, ce formulaire est assez succinct
la source
sort
etsorted
. Swift 2:sort
est devenusortInPlace
etsorted
est devenusort
.Dans Swift 4, vous pouvez l'écrire plus intelligemment:
la source
J'ai essayé tout ce qui précède, en un mot, tout ce dont vous avez besoin est
la source
Pour Swift 4, ce qui suit a fonctionné pour moi:
la source
C'est une alternative élégante au tri du dictionnaire lui-même:
À partir de Swift 4 et 5
la source
Dans Swift 5 , afin de trier le dictionnaire par CLÉS
Afin de trier le dictionnaire par VALEURS
la source
Pour Swift 3, le tri suivant renvoie le dictionnaire trié par clés:
la source
"trié" dans iOS 9 et xcode 7.3, swift 2.2 est impossible, remplacez "trié" par "tri", comme ceci:
la source
Array
deTuples
, pas unDictionary
Swift 5
Saisissez votre dictionnaire que vous souhaitez trier par ordre alphabétique par touches.
dict.sorted (par: {$ 0.key <$ 1.key}) par lui-même renvoie un tuple (valeur, valeur) au lieu d'un dictionnaire [valeur: valeur]. Ainsi, la boucle for analyse le tuple à renvoyer en tant que dictionnaire. De cette façon, vous mettez un dictionnaire et récupérez un dictionnaire.
la source
Swift 4 et 5
Pour le tri des clés de chaîne:
Exemple:
la source
Pour Swift 3, ce qui suit a fonctionné pour moi et la syntaxe Swift 2 n'a pas fonctionné:
la source
sortedDict
? C'est quoimenu
? Ce code ne semble pas non plus valide.Swift 3 est trié (par: <)
la source