将值添加到字典中,使其值为列表

时间:2015-12-07 14:54:43

标签: c#

我有这样的字典:

Dictionary<string, List<string>> providerLevelChanges = new Dictionary<string, List<string>>();

通过在字典中输入项目的键,如何将值添加到其值列表中?

我正在做这样的事情,但这是错误的。

providerLevelChanges["someKey"].Add("someNewValue");

4 个答案:

答案 0 :(得分:4)

首先需要初始化列表,您可以使用TryGetValue检查密钥是否已经存在,否则添加它:

List<string> list;
if (!providerLevelChanges.TryGetValue("someKey", out list))
{
    list = new List<string>();
    providerLevelChanges.Add("someKey", list);
}
list.Add("someNewValue");

如果要在一行中初始化字典,可以使用collection-initializer:

Dictionary<string, List<string>> providerLevelChanges = new Dictionary<string, List<string>>()
{
    { "someKey", new List<string>{"someNewValue"} }
};

答案 1 :(得分:3)

您需要确保列表存在,如果不存在则添加

func test(_:String) {
    print("How do I access '_'?")
}

答案 2 :(得分:2)

您需要先创建价值清单。 尝试像

这样的东西
List<string> theList = new List<string>()
if (!providerLevelChanges.TryGetValue("somekey", out theList))
{
   //The key is not present in the dictionary 
   providerLevelChanges["somekey"] = theList;
}
theList.Add("someNewValue");

答案 3 :(得分:1)

如果没有完整的代码和错误消息,很难说出你的问题,但这里有一个完整的例子:

//instantiate the Dictionary
Dictionary<string, List<string>> providerLevelChanges = new Dictionary<string, List<string>>();

//Add the first item to the Dictionary - notice the empty List<string>
providerLevelChanges.Add("someKey", new List<string>());

//Add a value to the new List<string>
providerLevelChanges["someKey"].Add("someNewValue");

重要的是我在尝试访问之前向Dictionary添加了一个完整的元素。