web-dev-qa-db-fra.com

Comment convertir un dictionnaire en tableau

Je souhaite convertir mon dictionnaire en tableau, en affichant chaque [String : Int] du dictionnaire sous forme de chaîne dans le tableau.

Par exemple:

var myDict: [String : Int] = ["attack" : 1, "defend" : 5, "block" : 12]

Je suis conscient de myDict.keys.array et myDict.values.array, mais je veux qu'ils apparaissent ensemble dans un tableau. Voici ce que je veux dire:

var myDictConvertedToArray = ["attack 1", "defend 5", "block 12"]

Merci d'avance.

27
Nick

Vous pouvez utiliser une boucle for pour parcourir les paires clé/valeur du dictionnaire pour construire votre tableau:

var myDict: [String : Int] = ["attack" : 1, "defend" : 5, "block" : 12]

var arr = [String]()

for (key, value) in myDict {
    arr.append("\(key) \(value)")
}

Remarque: Les dictionnaires sont non ordonnés , donc l'ordre de votre tableau peut ne pas être celui que vous attendez.


Dans Swift 2 et versions ultérieures, cela peut également être fait avec map:

let arr = myDict.map { "\($0) \($1)" }

Cela peut également s'écrire:

let arr = myDict.map { "\($0.key) \($0.value)" }

ce qui est plus clair sinon aussi court.

35
vacawama

Le cas général de la création d'un tableau à partir de ONLY VALUES d'un dictionnaire dans Swift 3 est (je suppose que cela fonctionne également dans les anciennes versions de Swift):

let arrayFromDic = Array(dic.values.map{ $0 })

Exemple:

let dic = ["1":"a", "2":"b","3":"c"]

let ps = Array(dic.values.map{ $0 })

print("\(ps)")

for p in ps {
    print("\(p)")
}
13
Ali

Si vous aimez le code concis et préférez une approche fonctionnelle, vous pouvez utiliser la méthode map exécutée sur la collection de clés:

let array = Array(myDict.keys.map { "\($0) \(myDict[$0]!)" })

ou, comme suggéré par @vacawama:

let array = myDict.keys.array.map { "\($0) \(myDict[$0]!)" }

qui est fonctionnellement équivalent

6
Antonio

Vous devrez parcourir et construire vous-même un nouveau tableau à partir des clés et des valeurs.

Jetez un œil à 's Swift array :

Vous pouvez ajouter un nouvel élément à la fin d'un tableau en appelant la méthode append (_ :) du tableau:

Essaye ça:

var myDict:[String : Int] = ["attack" : 1, "defend" : 5, "block" : 12]

var dictArray: [String] = []

for (k, v) in myDict {
    dictArray.append("\(k) \(v)")
}

Jetez un œil à Quelle est la manière la plus propre d'appliquer map () à un dictionnaire dans Swift? si vous utilisez Swift 2.0:

2
MrHaze