Question Comment convertir un dictionnaire en tableau


Je veux convertir mon dictionnaire en un tableau, en montrant chaque [String : Int] du dictionnaire en tant que 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.


17
2017-08-06 01:34


origine


Réponses:


Cela fonctionnera:

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

var arr = [String]()

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

Notez que les dictionnaires sont non ordonné, donc l'ordre de votre tableau pourrait ne pas être ce que vous attendez.

Dans Swift 2.0, cela peut aussi être fait avec map:

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

24
2017-08-06 01:42



Le cas général pour créer un tableau à partir de SEULES VALEURS 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)")
}

11
2018-01-25 22:22



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

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

ou, comme le suggère @vacawama:

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

qui est fonctionnellement équivalent


5
2017-08-06 07:15



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

Jettes un coup d'oeil à Documentation la documentation rapide du tableau:

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

Essaye ça:

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

var dictArray: [String] = []

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

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


1
2017-08-06 01:36