¿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

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)

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


7
dict.removeValue(forKey: willRemoveKey)

O puede usar la sintaxis de subíndice:

dict[willRemoveKey] = nil

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)
            }
        }
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.