¿Cómo eliminar un par clave-valor del diccionario rápido?

81

Quiero eliminar un par clave-valor de un diccionario como en el ejemplo si es posible.

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

Respuestas:

165

Puedes usar esto:

dict[willRemoveKey] = nil

o esto:

dict.removeValueForKey(willRemoveKey)

La única diferencia es que el segundo devolverá el valor eliminado (o nulo si no existía)

Swift 3

dict.removeValue(forKey: willRemoveKey)
Kametrixom
fuente
3
esto debería llamarse ahora dict.removeValue(willRemoveKey)ya que parece que .removeValueForKey ha sido renombrado - ¡gracias por la ayuda!
Coty Embry
Tan agradable y tan limpio. ¡Quiéralo!
dustinrwh
4
Si sus valores son opcionales, ¿cómo puede funcionar la sintaxis del subíndice?
WiseOldDuck
5
¿Alguien más ha notado que los documentos dicen que esto es O (n) donde n es el tamaño del diccionario?
Andrew
1
@WiseOldDuck Al asignar el subíndice a nilsiempre se elimina la clave. Para asignar un nilvalor verdadero en un diccionario con un tipo de valor opcional, asigne .some(nil).
BallpointBen
30

Swift 5 , Swift 4 y Swift 3 :

x.removeValue(forKey: "MyUndesiredKey")

Salud

Sasho
fuente
7
dict.removeValue(forKey: willRemoveKey)

O puede usar la sintaxis de subíndice:

dict[willRemoveKey] = nil
Fantini
fuente
0

Eliminar con verificación de condiciones en 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)
            }
        }
Govind Wadhwa
fuente