我有两个字符串数组,它定义如下,以便如何从一系列键值对创建字典。
let cityNames = ["Riyadh", "Mecca", "Sultanah", "Buraydah", "Al Qarah"]
let nearestDistances = [84.24, 41.37, 45.37, 57.96, 78.78]
非常感谢任何帮助。
答案 0 :(得分:3)
只需zip
将它们组合起来并将它们组合成一个循环
var dictionary = [String: Double]()
for (city, distance) in zip(cityNames, nearestDistances){
dictionary[city] = distance
}
更好的是,你可以为它做一个很好的扩展:
extension Dictionary{
init(keys: [Key], values: [Value]){
self.init()
for (key, value) in zip(keys, values){
self[key] = value
}
}
}
let dictionary = Dictionary<String, Double>(keys: cityNames, values: nearestDistances)
答案 1 :(得分:1)
如前所述,自Xcode 9起, Swift标准库为这种情况提供了方便的Dictionary
initializer:
init<S>(uniqueKeysWithValues keysAndValues: S)
where S: Sequence, S.Element == (Key, Value)
按给定顺序从键值对创建一个新词典。
如果对Swift泛型不太熟悉,这可能很难阅读;)尽管如此,用法非常简单:
let cityNames = ["Riyadh", "Mecca", "Sultanah", "Buraydah", "Al Qarah"]
let nearestDistances = [84.24, 41.37, 45.37, 57.96, 78.78]
let dict = Dictionary(uniqueKeysWithValues: zip(cityNames, nearestDistances))
print(dict)
打印:
[
"Buraydah": 57.96,
"Al Qarah": 78.78,
"Mecca": 41.37,
"Riyadh": 84.24,
"Sultanah": 45.37
]
最后,生成的字典类型是您所期望的:
print(type(of: dict)) // Dictionary<String, Double>