如何在 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:) 方法向字典添加元素。

merging(_:uniquingKeysWith:) 是 Swift 中 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:) 函数,例如保留当前字典的值或合并值等。

注意 - 此方法不会修改原始字典,它只返回一个新字典

结论

有不同的方法,例如 updateValue()、merging() 和使用下标语法。所有方法都可以在不同的情况下使用。

大多数情况下,我们使用下标语法向字典添加元素。在 Swift 中,字典非常强大,可以处理重复键。为了管理重复键,您可以使用上述示例中提供的方法之一。

更新于: 2023年2月28日

4K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告