我有字典:
var dictionary: [String: Any] = ["test1": "one", "test2": "two", "test3": 3, "test4": 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])
}