我有这样的字典:
Dictionary<string, List<string>> providerLevelChanges = new Dictionary<string, List<string>>();
通过在字典中输入项目的键,如何将值添加到其值列表中?
我正在做这样的事情,但这是错误的。
providerLevelChanges["someKey"].Add("someNewValue");
答案 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添加了一个完整的元素。