参照:夫特标准库>词典>map(_:)有没有办法在Swift中同时映射字典键/值?
返回包含在序列中的元素给定的闭合 映射的结果的阵列。
如上所述,我们可以在字典做映射,但输出将是阵列,而不是一个“映射”字典。
老实说,我不是很肯定,如果说“映射整个辞典”是合法的,但我的意思是这样的:
认为我们有:
let myDict = ["1": "one","2": "tow","3": "three"]
,我们希望映射整个事情! (键和值)。输出应该是:
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()
}
感谢。
为什么不改变键值直接将值添加到'mappedDict'中就可以了,所以你可以跳过创建'mappedKeys','mappedValues'和'zippedArray'。 – Eendje
没有必要将压缩的序列转换为'Array',你可以直接迭代它们。为什么不直接迭代字典并将变换应用于循环中的键和值? (例如'for(key,value)in myDict {mappedDict [“0”+ key] = value.uppercased()}')? – Hamish
@Eendje我把它们分开只是为了让它更具可读性......顺便说一句,你认为整个答案是一个很好的解决方案吗? –