如何在Swift中从字典中特定索引位置移除键值对?

5
如何在Swift中使用remove(at: DictionaryIndex<Key, Value>)从字典中删除键值对?
1个回答

9
您可以获取字典中键/值对的索引,然后删除该条目:
var dict = ["foo": 1, "bar": 2, "baz": 3]
print(dict) // ["bar": 2, "baz": 3, "foo": 1]

if let idx = dict.index(forKey: "bar") {
    dict.remove(at: idx)
    print(dict) // ["baz": 3, "foo": 1]
}

然而,字典条目的索引有限,因为字典中键/值对的顺序是未指定的,并且插入或删除条目会使所有现有的字典索引无效。
您可以使用以下方式获得相同的结果:
dict["bar"] = nil

或者

dict.removeValue(forKey: "bar")

这些方法只在它们的返回值上有所不同:

  • dict["bar"] = nil 不返回任何值。
  • dict.removeValue(forKey: "bar") 如果给定的键存在于字典中,则返回已删除的值(作为可选项),否则返回nil
  • dict.remove(at: idx) 返回已删除的键/值对作为元组。返回值不是可选的,因为它接受现有条目的索引作为参数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接