[英]Converting Data from http request from JSON Dictionary of Dictionaries into one Array of Dictionaries in Swift
[英]Flatten an array of dictionaries to one dictionary
我有一組字典,其中columnId
和columnValue
是一對。 現在我需要將它展平為columnId
作為鍵和columnValue
作為它的值。 如何處理 swift 高階函數?
let arrayOfDictionaries = [["columnId": 123, "columnValue": "sample text"], ["columnId": 124, "columnValue": 9977332]]
//The end result should be:
flattenedDictionary: [String: Any] = ["123": "sample text", "124": 9977332]
注意:結果字典將采用[String: Any]
的形式
這會起作用:
func flatten(_ pairs: [[String: Any]]) -> [String: Any] {
pairs.reduce(into: [String: Any]()) {
if let id = $1["columnId"] as? Int, let value = $1["columnValue"] {
$0["\(id)"] = value
}
}
}
您可以分兩步完成此操作;
compactMap
將輸入數組轉換為鍵值對序列Dictionary(uniqueKeysWithValues:)
將序列轉換回字典let arrayOfDictionaries = [["columnId": 123, "columnValue": "sample text"], ["columnId": 124, "columnValue": 9977332]]
let tupleArray:[(String,Any)] = arrayOfDictionaries.compactMap { dict in
guard let id = dict["columnId"], let value = dict["columnValue"] else {
return nil
}
return ("\(id)",value)
}
let flattenedDictionary: [String: Any] = Dictionary(uniqueKeysWithValues: tupleArray)
請注意,如果存在重復鍵,此代碼將拋出異常。 您應該采取措施確保columnId
值是唯一的,或者使用Dictionary(keysAndValues:, uniquingKeysWith:)
來解決 id 沖突。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.