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)
请帮忙。
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.