簡體   English   中英

將字典數組轉換為字典

[英]Convert array of dictionaries to dictionary

[
  [
    "firstname":"Gary","age":35,"lastname":"Jon","marks": 
      [
        "English":98,"Maths":45,"Science":58,"Social":95
      ],
    "section":"A"
  ], 
  [
    "firstname":"Jacob","age":32,"lastname":"bil","marks": 
      [
        "English":90,"Maths":65,"Science":88,"Social":90
      ],
    "section":"B"
  ]
]

如何將上面的詞典數組轉換成包含名字和姓氏以及總成績的字典?
這是預期的結果:

[Gary Jon: 296, Jacob bil: 333]

你可以試試看

let d = [
    ["firstname":"Gary","age":35,"lastname":"Jon","marks":["English":98,"Maths":45,"Science":58,"Social":95],"section":"A"],
    ["firstname":"Jacob","age":32,"lastname":"bil","marks":["English":90,"Maths":65,"Science":88,"Social":90],"section":"B"]
]

let dd = d.reduce([:]) { (result, value) -> [String: Int] in
    let marks = value["marks"] as! [String: Int]
    let totalMarks = marks.values.reduce(0, +)

    let firstName = value["firstname"] as! String
    let lastName = value["lastname"] as! String

    let student = ["\(firstName) \(lastName)" : totalMarks]
    return result.merging(student) { $1 }
}
print(dd)

輸出量

 ["Gary Jon": 296, "Jacob bil": 333] 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM