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)
使用斯威夫特 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)
如果您喜欢简洁的代码并且更喜欢功能方法,则可以使用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)
这在功能上是等同的