如何将字典转换为数组

Nic*_*ick 28 arrays dictionary ios swift

我想通过将每个[String : Int]字典显示为数组中的字符串,将我的字典转换为数组.

例如:     

var myDict: [String : Int] = ["attack" : 1, "defend" : 5, "block" : 12]
Run Code Online (Sandbox Code Playgroud)

     我知道myDict.keys.array并且myDict.values.array,但我希望它们一起出现在阵列中.这就是我的意思:     

var myDictConvertedToArray = ["attack 1", "defend 5", "block 12"]
Run Code Online (Sandbox Code Playgroud)

提前致谢.

vac*_*ama 36

您可以使用for循环遍历字典键/值对来构造数组:

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

var arr = [String]()

for (key, value) in myDict {
    arr.append("\(key) \(value)")
}
Run Code Online (Sandbox Code Playgroud)

注意:字典是无序的,因此数组的顺序可能与您的预期不符.


Swift 2及更高版本中,这也可以通过以下方式完成map:

let arr = myDict.map { "\($0) \($1)" }
Run Code Online (Sandbox Code Playgroud)

这也可以写成:

let arr = myDict.map { "\($0.key) \($0.value)" }
Run Code Online (Sandbox Code Playgroud)

如果不是那么短,那就更清楚了.


Ali*_*Ali 15

在Swift 3中使用字典的ONLY VALUES创建数组的一般情况是(我假设它也适用于旧版本的swift):

let arrayFromDic = Array(dic.values.map{ $0 })
Run Code Online (Sandbox Code Playgroud)

例:

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

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

print("\(ps)")

for p in ps {
    print("\(p)")
}
Run Code Online (Sandbox Code Playgroud)


Moh*_*Zek 7

使用斯威夫特 5

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

let arrayValues = myDict.values.map({$0})
let arrayKeys = myDict.keys.map({$0})
Run Code Online (Sandbox Code Playgroud)


Ant*_*nio 6

如果您喜欢简洁的代码并且更喜欢功能方法,则可以使用map在密钥集合上执行的方法:

let array = Array(myDict.keys.map { "\($0) \(myDict[$0]!)" })
Run Code Online (Sandbox Code Playgroud)

或者,正如@vacawama所建议的那样:

let array = myDict.keys.array.map { "\($0) \(myDict[$0]!)" }
Run Code Online (Sandbox Code Playgroud)

这在功能上是等同的