如何在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!我真傻。我读的是问题,不是题目。