Cómo convertir dictionary a array

Quiero convertir mi dictionary a una matriz, mostrando cada [String : Int] del dictionary como una cadena en la matriz.

Por ejemplo:

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

Soy consciente de myDict.keys.array y myDict.values.array , pero quiero que se muestren en una matriz juntos. Esto es lo que quiero decir:

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

Gracias por adelantado.

Esto funcionará:

 var myDict:[String : Int] = ["attack" : 1, "defend" : 5, "block" : 12] var arr = [String]() for (key, value) in myDict { arr.append("\(key) \(value)") } 

Tenga en count que los dictionarys no están orderados , por lo que el order de su matriz podría no ser el esperado.

En Swift 2.0 , esto también se puede hacer con el map :

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

Si desea un código conciso y prefiere un enfoque funcional, puede usar el método de map ejecutado en la colección de keys:

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

o, como lo sugiere @vacawama:

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

que es funcionalmente equivalente

El caso general para crear una matriz de SÓLO VALORES de un dictionary en Swift 3 es (supongo que también funciona en versiones anteriores de swift):

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

Ejemplo:

 let dic = ["1":"a", "2":"b","3":"c"] let ps = Array(dic.values.map{ $0 }) print("\(ps)") for p in ps { print("\(p)") } 

Tendrá que pasar y build una nueva matriz de las keys y los valores.

Eche un vistazo a la documentation de la serie rápida de </s> :

Puede agregar un nuevo elemento al final de una matriz llamando al método append (_ 🙂 de la matriz:

Prueba esto:

 var myDict:[String : Int] = ["attack" : 1, "defend" : 5, "block" : 12] var dictArray: [String] = [] for (k, v) in myDict { dictArray.append("\(k) \(v)") } 

Echa un vistazo a ¿Cuál es la forma más limpia de aplicar map () a un dictionary en Swift? si está utilizando Swift 2.0: