如何在 swift 中按键对字典数组进行分组?

mus*_*afa 0 arrays dictionary swift

例如,我有这个字典数组

 [["Country":"Egypt","Name":"Mustafa","Age":"20"],["Country":"Palestine","Name":"Omar","Age":"15"],["Country":"Egypt","Name":"Ali","Age":"40"],["Country":"Jordan","Name":"Ahmad","Age":"25"],["Country":"Palestine","Name":"Amani","Age":"30"],["Country":"Jordan","Name":"Mustafa","Age":"20"]]
Run Code Online (Sandbox Code Playgroud)

我想按国家对它们进行分组,以成为

  {"Egypt": [{"Country":"Egypt","Name":"Mustafa","Age":"20"} {"Country":"Egypt","Name":"Ali","Age":"40"}],
   "Palestine": [{"Country":"Palestine","Name":"Amani","Age":"30"},{"Country":"Palestine","Name":"Omar","Age":"15"}],
   "Jordan":[{"Country":"Jordan","Name":"Ahmad","Age":"25"},{"Country":"Jordan","Name":"Mustafa","Age":"20"}]
}
Run Code Online (Sandbox Code Playgroud)

请帮忙。

Fog*_*ter 5

Swift 有一个很好的函数可以为你做到这一点......

let people = [["Country":"Egypt","Name":"Mustafa","Age":"20"],["Country":"Palestine","Name":"Omar","Age":"15"],["Country":"Egypt","Name":"Ali","Age":"40"],["Country":"Jordan","Name":"Ahmad","Age":"25"],["Country":"Palestine","Name":"Amani","Age":"30"],["Country":"Jordan","Name":"Mustafa","Age":"20"]]

let peopleByCountry = Dictionary(grouping: people, by: { $0["Country"]! } )
Run Code Online (Sandbox Code Playgroud)

peopleByCountry现在将是您想要的格式。

您可以在文档中阅读有关此功能的更多信息。

只是补充一下哈米什的评论。

你真的不应该在这里使用字典。你应该使用结构...

struct Person {
    let countryName: String
    let name: String
    let age: Int
}
Run Code Online (Sandbox Code Playgroud)

更好的是有一个Country结构......

struct Country {
    let name: String
}
Run Code Online (Sandbox Code Playgroud)

并将其用于Person他们的country财产而不是String.