我想你指的是“删除具有[]
作为值KVPs”,而不是“删除具有nil
作为值KVPs”。
对filter
的调用可以工作,但它会返回一个KVP元组数组,所以您必须使用for循环将它们全部添加到新字典中。
let dict = ["H": [], "X": [], "D": ["D1\r\n\r\n"], "J": ["J1\r\n"], "I": [], "M": [], "Z": [], "S": [], "A": ["A2"], "C": ["C2\r\n\r\n"], "N": [], "Y": [], "R": [], "G": [], "E": ["Emmm\r\n"], "V": [], "U": [], "L": [], "B": ["B2"], "K": ["King"], "F": [], "O": [], "W": [], "T": ["Test", "Test2"], "P": [], "Q": ["Queen"]]
var newDict = [String: [String]]()
for (key, value) in dict.filter({ !$0.1.isEmpty }) {
newDict[key] = value
}
或者,你可以只通过字典循环一次做到这一点:
let dict = ["H": [], "X": [], "D": ["D1\r\n\r\n"], "J": ["J1\r\n"], "I": [], "M": [], "Z": [], "S": [], "A": ["A2"], "C": ["C2\r\n\r\n"], "N": [], "Y": [], "R": [], "G": [], "E": ["Emmm\r\n"], "V": [], "U": [], "L": [], "B": ["B2"], "K": ["King"], "F": [], "O": [], "W": [], "T": ["Test", "Test2"], "P": [], "Q": ["Queen"]]
var newDict = [String: [String]]()
for (key, value) in dict where !value.isEmpty {
newDict[key] = value
}
我建议你'如果value.isEmpty'相反,这是更具可读性。您可以将条件放入循环中:'for(key,value)在dict中的value.isEmpty {dict.removeValue(forKey:key)}''。 –
@NikolaiRuhe按照评论编辑回答。谢谢。 :) – MacNay