如何从Swift字典中删除键值对?


81

我想从字典中删除键/值对,例如在可能的情况下。

var dict: Dictionary<String,String> = [:]
var willRemoveKey = "SomeKey"
dict.removePair(willRemoveKey) //that's what I need

Answers:


165

您可以使用此:

dict[willRemoveKey] = nil

或这个:

dict.removeValueForKey(willRemoveKey)

唯一的区别是第二个将返回删除的值(如果不存在,则返回nil)

迅捷3

dict.removeValue(forKey: willRemoveKey)

3
现在应该调用dict.removeValue(willRemoveKey)它,因为它看起来像.removeValueForKey已重命名-感谢您的帮助!
Coty Embry

太好了,太干净了。爱它!
–ustinrwh

4
如果您的值是可选的,那么下标语法如何工作?
WiseOldDuck

5
还有其他人注意到文档说这是O(n),其中n是字典的大小吗?
安德鲁

1
@WiseOldDuck将下标分配为nil始终删除密钥。要nil在具有可选值类型的字典中分配真值,请分配.some(nil)
圆珠笔

30

Swift 5Swift 4Swift 3

x.removeValue(forKey: "MyUndesiredKey")

干杯


7
dict.removeValue(forKey: willRemoveKey)

或者,您可以使用下标语法:

dict[willRemoveKey] = nil

0

删除并检查LOOP中的条件

var eventDateDict = [String:String]()
//Declarations
var tempDict = eventDateDict
        for value in tempDict{
            let getDate = value.key
            if getDate < Date(){
                eventDateDict.removeValue(forKey: value.key)
            }
        }
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.