參照:夫特標準庫>詞典>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我把它們分開只是爲了讓它更具可讀性......順便說一句,你認爲整個答案是一個很好的解決方案嗎? –