2013-01-10 20 views
2

我正在使用VB中的dictionary(of string, list(of string))來存儲從大型.csv文件中提取的一些文本數據。如何將值插入(string,list(of string))字典的列表部分?

dictionary.key只是一個日期字符串,如「2012-12-12」,並且相應的列表值包含與該日期關聯的所有文件。

使用StreamReaderline.split,我可以拉出日期字符串並將其與字典進行比較。如果字典不包含該日期,我想將其作爲新密鑰插入,然後將該文件名添加到該密鑰的列表中。這將遍歷整個文件,然後繼續執行用戶選擇的每個文件,使用相同的字典。最終,我應該在每個日期看到4或5個文件名,每個日期不允許有重複的文件名。

什麼是使用dictionary.add方法來做到這一點的正確方法?

+0

[你嘗試過什麼(http://whathaveyoutried.com)?請張貼您的代碼並解釋您卡在哪裏。 – Oded

+0

起初,我嘗試了一個簡單的「If ..」語句:如果不是dictionary.ContainsKey(string),那麼dictionary.add(string,string)'認爲第二個字符串會自動進入相應的列表。這會產生一個錯誤「字符串類型的值不能轉換爲Systems.Collections.Generic.List(Of String)」。 – Mellonjollie

+0

嗯,是的,一個「字符串」不是一個字符串列表......當添加到字典中時,您需要添加一個新的_list_並將該值添加到該列表中。 – Oded

回答

4

這樣的事情?

Dim key as String = "asdf" 
If Not dict.ContainsKey(key) Then 
    dict.Add(key, New List(Of String)(New String() {"1", "2", "3"})) 
    Dim values = dict(key) 
    If not values.Contains("some value") Then 
     values.Add("some value") 
    End If 
End If 

或者是這樣的:

Dim key as String = "asdf" 
If Not dict.ContainsKey(key) Then 
    dict.Add("asdf", New List(Of String)) 
    dict(key).Add("1") 
    dict(key).Add("2") 
    ... and however many more values here ... 
End If 
+0

你的第一個例子非常感謝。現在,我怎麼能檢查存儲在列表中與另一個字符串對應的某個鍵的值,然後將該字符串插入該鍵的列表中(如果它不在那裏)? – Mellonjollie

+0

@Mellonjollie我更新了第一個片段,告訴你如何做到這一點。您只需獲得您正在使用的密鑰標識的列表的引用,並檢查列表是否包含該值。如果沒有,請添加它。 –

+0

完美!非常感謝。我不知道爲什麼我們的教科書從未涉及字典或列表。 – Mellonjollie

相關問題