Як видалити пару ключ-значення зі швидкого словника?


83

Я хочу видалити пару ключ-значення зі словника, як у прикладі, якщо це можливо.

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

Відповіді:


169

Ви можете використовувати це:

dict[willRemoveKey] = nil

або це:

dict.removeValueForKey(willRemoveKey)

Різниця лише в тому, що другий поверне видалене значення (або нуль, якщо його не було)

Стрімкий 3

dict.removeValue(forKey: willRemoveKey)

3
це тепер слід викликати, dict.removeValue(willRemoveKey)оскільки схоже на .removeValueForKey було перейменовано - дякую за допомогу!
Coty Embry

Так приємно і так чисто. Любіть це!
dustinrwh

4
Якщо ваші значення є необов’язковими, як може працювати синтаксис індексу?
WiseOldDuck

5
Хтось ще помічав, що в документах сказано, що це O (n), де n - розмір словника ?!
Ендрю,

1
@WiseOldDuck Призначення індексу nilзавжди видаляє ключ. Щоб призначити справжнє nilзначення у словнику з необов’язковим типом Значення, призначте .some(nil).
BallpointBen

30

Свіфт 5 , Свіфт 4 і Свіфт 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)
            }
        }
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.