你可以这样做:)。
let universities = ["Université de Limoges": "France", "Vytautas Magnus University": "Lithuania", "Universidade Federal de Sergipe": "Brazil", "Instituto Politécnico de Lisboa": "Portugal", "Universidad de San Buenaventura": "Colombia", "Universitas Widyatama": "Indonesia", "Zhengzhou University of Technology": "China"]
func filterUniversities(country: String) -> [String] {
return universities
.compactMap { tuple in
return tuple.value == country ? tuple.key : nil
}
}
print(filterUniversities(country: "France"))
这将返回["Université de Limoges"],我希望这是您根据问题寻找的内容。
根据评论更新解决方案:
我不确定 100% 的预期结果是什么,所以我创建了两个变体:
let allUniversities = [
["Université de Limoges": "France", "Universidad de San Buenaventura": "Colombia", "Universitas Widyatama": "Indonesia", "Zhengzhou University of Technology": "China"],
["Universidade Federal de Sergipe": "Brazil", "Vytautas Magnus University": "Lithuania"],
["Instituto Politécnico de Lisboa": "Portugal", "Sorbonne": "France"]
]
func filterUniversities(country: String) -> [String] {
return allUniversities
.lazy
.reduce([String]()) { (result, universities) in
let filteredUniversities = universities.compactMap { $0.value == country ? $0.key : nil }
return result + filteredUniversities
}
}
print(filterUniversities(country: "France"))
func filterUniversityDictionaries(country: String) -> [[String: String]] {
return allUniversities.lazy.filter { $0.values.contains(country) }
}
print(filterUniversityDictionaries(country: "France"))
这将为您提供以下结果:
["Université de Limoges", "Sorbonne"]
[["Zhengzhou University of Technology": "China", "Universidad de San Buenaventura": "Colombia", "Université de Limoges": "France", "Universitas Widyatama": "Indonesia"], ["Instituto Politécnico de Lisboa": "Portugal", "Sorbonne": "France"]]