如何使用内部列表将项追加到字典?
这是我的代码:
Dictionary<string, List<double>> listVariables = new Dictionary<string, List<double>>();
这是我附加新值的方式:
for (int x = 1; x <= 4; x++) {
listVariables["foo" + x].Add(1.1);
}
没有发现错误,但是当我启动我的应用程序时,它崩溃了,我得到了:
An unhandled exception of type 'System.Collections.Generic.KeyNotFoundException' occurred in mscorlib.dll
Additional information the given key was not present in the dictionary
我可以用listVariables["foo" + x].Add(1.1);
代替listVariables["foo" + x] = new List<double> { 1.1 };
但这将始终替换第一个索引值,我想将所有数据附加在一行行中
我该如何解决?非常感谢。
答案 0 :(得分:3)
您需要检查密钥是否已经存在,如果不存在,则需要添加一个空列表:
for (int x = 1; x <= 4; x++)
{
var key = "foo" + x;
if (!listVariables.ContainsKey(key))
listVariables.Add(key, new List<double>());
listVariables[key].Add(1.1);
}
答案 1 :(得分:1)
您需要先检查密钥的存在,必要时添加一个新列表。
for (int x = 1; x <= 4; x++)
{
var key = "foo" + x;
if (!listVariables.ContainsKey(key))
listVariables[key] = new List<double>();
listVariables[key].Add(1.1);
}