Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在swift中从字典中删除空键值对_Swift_Dictionary - Fatal编程技术网

如何在swift中从字典中删除空键值对

如何在swift中从字典中删除空键值对,swift,dictionary,Swift,Dictionary,假设我有一本字典 let dic = ["a": "1", "b": "2", "c": "", "d": "3"] 我想删除带有其值的“c”键,这应该可以 let dic = ["a": "1", "b": "2", "c": "", "d": "3"] let filteredDict = dic.filter( { !$0.value.isEmpty }) print(filteredDict) // Prints ["a": "1", "b": "2", "d": "3"] 编辑:

假设我有一本字典

let dic = ["a": "1", "b": "2", "c": "", "d": "3"]
我想删除带有其值的“c”键,这应该可以

let dic = ["a": "1", "b": "2", "c": "", "d": "3"]

let filteredDict = dic.filter( { !$0.value.isEmpty })
print(filteredDict) // Prints ["a": "1", "b": "2", "d": "3"]

编辑:如果您只想删除某个特定的密钥,则可以选择大卫的。但这毫无意义,因为如果您知道要删除哪个键,它是否为空会有关系吗?我假设您不知道哪个键是空的,在这种情况下,您必须按照此答案中的显示方式进行操作。

您只需将要删除的键的值设置为
nil
。只需确保使用
var
关键字将字典声明为可变即可

var dic = ["a": "1", "b": "2", "c": "", "d": "3"]
dic["c"] = nil
print(dic) //["a": "1", "b": "2", "d": "3"]

下面是另一种使用过滤器的方法,该过滤器带有更新原始字典的
forEach
循环:

var dic = ["a": "1", "b": "2", "c": "", "d": "3"]

dic.filter({$0.value.isEmpty}).forEach( { dic[$0.key] = nil})

如果你想变异它,你必须使用
var
而不是
let
。然后
dic.removeValue(forKey:“c”)
@LeoDabus,在这种情况下,你可以建议用
let dic=[“a”:“1”,“b”:“2”,“c”:“d”:“3”]
替换
let dic=[“a”:“1”,“b”:“2”,“d”:“3”
/s。问题询问如何删除符合特定条件的值对(值为空[string]),而不是如何使用键
“c”
删除值。或任何其他特定键。@user28434文章的最后一句话我想删除带值的“c”键。@LeoDabus,这可能被解释为删除所有空值的预期结果。我想我们都同意,这个问题可以用不同的方式来理解……如果他有多个键值对,而这些键值对都是空字符串值呢?这是一个非常特别的解决方案。并假设字典数据在编译之前是静态和/或预定义的。@RakeshaShastri问题并没有涉及删除其值为空的所有键。这个问题只是问如何删除一个特定的键。@rmaddy目前看起来是这样的,因为在问这个问题的基础上,他给出了一个非常具体的例子。我猜他可能想删除所有的空文件。我们将等待OP的澄清。注:我没有投反对票。我认为标题意味着字典和这里的“c”只是一个例子。问题询问如何删除空键值对,因此它应该适用于任何**空键值对**(应该是
键值对,空字符串为value
),而不是特定字典中的特定键。这并不能回答问题。问题只是问如何删除一个特定的键。问题中没有任何内容询问如何删除值为空字符串的所有键/值对。@rmaddy,你的意思是,除了标题?@user28434 Ha!我真傻。我读的是问题,不是题目。