引用:Swift 标准库 > 词典 > map(_:)
Returns an array containing the results of mapping the given closure over the sequence’s elements.
如上所述,我们可以在字典中进行映射,但输出将是数组,而不是“映射”字典。
老实说,我不太确定说“映射整个字典”是否合法,但我的意思是:
考虑一下我们有:
let myDict = ["1": "one","2": "tow","3": "three"]
我们想要绘制整个事情的 map ! (键和值)。输出应该是:
let mappedDict = ["03": "THREE", "02": "TOW", "01": "ONE"]
假设映射的目标是将“0”作为第一个字符添加到所有键,并让所有值都大写。
为了使其更具可读性,我发布了一个解决方案(我尝试过的)作为答案,而不是在问题本身中提及它;我认为我的答案不是那么优雅(或者至少我对其代码味道的感觉),我映射了键、值并将它们组合在字典中,每个步骤都是独立实现的。
所以,我要问的是:
有没有办法直接一步完成这项工作?类似于:
此代码片段演示了我所询问的内容,代码无法正常工作
let myDict = ["1": "one","2": "tow","3": "three"]
let mappedDict = myDict.map { key, value in
"0" + key
value.uppercased()
}
提前致谢。
最佳答案
这个怎么样?
let myDict = ["1": "one","2": "tow","3": "three"]
let mappedDict = myDict.reduce([:]) { (result, pair) -> [String: String] in
var result = result
result["0" + pair.key] = pair.value.uppercased()
return result
}
关于arrays - 有没有办法在 Swift 中同时映射字典键/值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41342582/