2017-08-22 51 views
3

嗨,我需要刪除沒有值的字典鍵。我嘗試了許多代碼,但沒有工作。我只需要帶有鍵的字典值,我需要迅速做到這一點3如何刪除快捷鍵中的值爲空的字典3

["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"]] 

回答

2

我試過這段代碼,爲我工作。

var dict: [String: [Any]] = ["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"]] 
for (key, value) in dict where value.isEmpty { 
    dict.removeValue(forKey: key) 
} 
+0

我建議你'如果value.isEmpty'相反,這是更具可讀性。您可以將條件放入循環中:'for(key,value)在dict中的value.isEmpty {dict.removeValue(forKey:key)}''。 –

+0

@NikolaiRuhe按照評論編輯回答。謝謝。 :) – MacNay

2

我想你指的是「刪除具有[]作爲值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 
} 
+0

@vadian謝謝!編輯。 – Sweeper