Swift 如何把元素追加到字典中
Swift有各种方法可以将元素追加到字典中。
我们将使用下面的方法来追加Swift语言中字典中的元素-
- 使用 updateValue() 方法追加元素
-
使用下标语法追加元素。
-
使用merging()方法追加元素。
使用updateValue()方法
swift中的updateValue(:forKey:)方法用于更新一个现有键的值或向现有字典中添加一个新的键值组合。如果该键以前不在字典中,该方法将返回 nil 而不是该键以前的值,这里有一个例子
例子
import Foundation
var userInfo: [String: Any] = ["firstName": "Alex",
"school": "St. Primary School",
"score": 8.8,
"age": 16]
print("Original User Info: \(userInfo)")
// Adding new key-value pairs
userInfo.updateValue("USA", forKey: "country")
userInfo.updateValue("Murphy", forKey: "lastName")
userInfo.updateValue("Martin Murphy", forKey: "fatherName")
print("Updated User Info: \(userInfo)")
输出
Original User Info: ["firstName": "Alex", "age": 16, "school": "St. Primary School", "score": 8.8]
Updated User Info: ["fatherName": "Martin Murphy", "age": 16, "score": 8.8, "lastName": "Murphy", "firstName": "Alex", "school": "St. Primary School", "country": "USA"]
使用下标语法
另外,你也可以使用下标语法来为一个新的或现有的键赋值。下面是一个例子。
例子
import Foundation
var userInfo: [String: Any] = ["firstName": "Alex",
"school": "St. Primary School",
"score": 8.8,
"age": 16]
print("Original User Info: \(userInfo)")
// Adding new key-value pairs
userInfo["country"] = "USA"
userInfo["lastName"] = "Murphy"
userInfo["fatherName"] = "Martin Murphy"
print("Updated User Info: \(userInfo)")
输出
Original User Info: ["age": 16, "school": "St. Primary School", "firstName": "Alex", "score": 8.8]
Updated User Info: ["firstName": "Alex", "fatherName": "Martin Murphy", "country": "USA", "score": 8.8, "age": 16, "school": "St. Primary School", "lastName": "Murphy"]
使用 merging() 方法
你也可以使用 Dictionary 的 .merging(_:uniquingKeysWith:) 方法来追加元素到一个 dictionary 中。
merging(_:uniquingKeysWith:) 是 Swift 中 Dictionary 类型上的一个方法,它允许你把一个 dictionary 的内容合并到另一个 dictionary 中,并指定如何处理重复的键。
这个方法需要两个参数
- 第一个参数是你想合并到当前 dictionary 中的那个 dictionary。
-
第二个参数是一个闭包,它接收相同键的两个值并返回你想保留的值。
例子
下面是一个演示如何使用merging(_:uniquingKeysWith:)方法的例子-
import Foundation
var userInfo: [String: Any] = ["firstName": "Alex",
"school": "St. Primary School",
"score": 8.8,
"age": 16]
print("Original User Info: \(userInfo)")
// creating a new dictionary with other info
let otherInfo: [String: Any] = ["country": "USA",
"lastName": "Murphy",
"fatherName": "Martin Murphy",
"pincode": 6783456]
userInfo = userInfo.merging(otherInfo, uniquingKeysWith: { current, _ in
return current
})
print("Updated User Info: \(userInfo)")
输出
Original User Info: ["school": "St. Primary School", "score": 8.8, "age": 16, "firstName": "Alex"]
Updated User Info: ["firstName": "Alex", "pincode": 6783456, "country": "USA", "lastName": "Murphy", "school": "St. Primary School", "age": 16, "fatherName": "Martin Murphy", "score": 8.8]
如果键已经存在,它将把 otherInfo 与 userInfo 合并,并利用当前的值。为了处理重复的键,你可以选择以不同的方式使用merging(:uniquingKeysWith:)函数,例如保持当前字典的值或合并值等。
注意 - 这个方法不会修改原来的 dictionary,它只返回一个新的 dictionary
结论
有不同的方法,如 updateValue(), merging(), 和使用下标语法。所有这些方法都可以在不同的情况下使用。
大多数时候,我们使用下标语法来向 dictionary 中追加元素。在 Swift 中,字典在处理重复键方面非常强大。为了管理重复的键,你可以使用上面的例子中提供的方法之一。