如何从词典中删除所有诠释值?

时间:2019-02-03 02:25:31

标签: swift dictionary

我有字典:

var dictionary: [String: Any] = ["test1": "one", "test2": "two", "test3": 3, "test4": 4]

获取新字典的最佳方法是什么,但仅使用字符串值?

4 个答案:

答案 0 :(得分:1)

如何?

for (key, value) in dictionary {

   if let value = value as? Int {
      dictionary.removeValue(forKey: key)
   }
}

伪步骤:

1。)检查字典中的每个键/值对

2。)检查值是一个整数

3。)如果value是一个整数,请删除与该键对的字典对值

注意:这是在修改您的原始词典。如果您想创建字典的新实例(第二个实例)并保持原样不变,我认为这就像创建一个新字典并将其分配给原始字典的值一样简单,然后修改第二个字典。< / p>

答案 1 :(得分:1)

您可以过滤那些数字。

获取那些字符串。

dictionary = dictionary.filter({ ($0.value as? Int) == nil })

获取那些是Int

dictionary = dictionary.filter({ ($0.value as? Int) != nil })

我们所做的一切都在这里通过投打字诠释过滤器,看它是否nil与否。

注意:可以只对原始词典做-

var dictionary: [String: Any] = ["test1": "one", "test2": "two", "test3": 3, "test4": 4].filter({ ($0.value as? Int) == nil })

OR

var dictionary: [String: Any] = ["test1": "one", "test2": "two", "test3": 3, "test4": 4].filter({ ($0.value as? Int) != nil })

答案 2 :(得分:1)

您可以为Dictionary编写扩展名:

extension Dictionary where Key == String, Value: Any{
    var withoutInt: [String: Any] {
        return self.filter{ !($0.value is Int) }
    }
}

然后使用它:

dictionary = dictionary.withoutInt

答案 3 :(得分:-1)

for (key, value) in dictionary {
    if let v = value as? Int {
        dictionary.removeValue(forKey : key)
    }
}

如果您不修改父词典,那么

func removeInt(dictionary : [String : Any]) ->[String : Any] {
    var dict2 = NSMutableDictionary() 
    for (key, value) in dictionary {
    if let v = value as? Int {
        dict2.setValue(v, forKey : key)
    }
  }
  return (dict2 as! [String : Any])
}