我想使用c#中的字典和这样的列表
Dictionary<int, List<int>> Dir = new Dictionary<int, List<int>>();
但是我在添加键和值的语法方面遇到了麻烦。我想如果我做了像
这样的事情Dir.Add(integer1, integer2);
它将添加integer1作为键,并将integer2作为值。然后,如果我想添加到integer1键,我会做
Dir.Add[interger1].Add(interger3);
我还有一个问题,我有一个像这样的foreach循环来显示键
foreach (KeyValuePair<int, List<int>> k in labelsList)
{
Console.WriteLine(k.Key + " "+ k.Value);
}
它显示我预期的最多7个键,但它没有显示我希望它显示的值,它只是显示
1 System.Collections.Generic.List`1 [System.Int32]
2 System.Collections.Generic.List`1 [System.Int32]
3 System.Collections.Generic.List`1 [System.Int32]
4 System.Collections.Generic.List`1 [System.Int32]
5 System.Collections.Generic.List`1 [System.Int32]
6 System.Collections.Generic.List`1 [System.Int32]
7 System.Collections.Generic.List`1 [System.Int32]
我有任何想法使用像
这样的嵌套foreachforeach (KeyValuePair<int, List<int>> k in labelsList)
{
foreach (KeyValuePair<int, List<int>> k in labelsList)
{
Console.WriteLine(k.Key + " " + k.Value);
}
}
但我不确定在嵌套的foreach中放置什么来迭代列表
答案 0 :(得分:2)
您必须先将集合添加到字典中,然后才能开始向其中添加值。这是一个进行一次查找的解决方案(如果使用ContainsKey
,则为两次)。如果缺少列表,它还会添加列表。
public class YourClass
{
private Dictionary<int, List<int>> _dictionary = new Dictionary<int, List<int>>();
public void AddItem(int key, int value)
{
List<int> values;
if (!_dictionary.TryGetValue(key, out values))
{
values = new List<int>();
_dictionary.Add(key, values);
}
values.Add(value);
}
public IEnumerable<int> GetValues(int key)
{
List<int> values;
if (!_dictionary.TryGetValue(key, out values))
{
return new int[0];
}
return values;
}
}
答案 1 :(得分:1)
当您致电Dir.Add()
时,您需要向List<int>
对象提供参考。提供int
本身是不对的。所以你需要这样的东西:
Dir.Add(integer1, new List<int>());
然后您可以像这样更新该条目:
Dir[integer1].Add(integer2);
Dir[integer1].Add(integer3);
或者,您可以使用集合初始值设定项语法:
Dir.Add(integer1, new List<int> { integer2, integer3});
答案 2 :(得分:0)
首先,为您的密钥integer1
创建一个条目,除非您已经这样做了:
Dir.Add(integer1, new List<int>());
然后,找到正确的字典条目,然后添加其值(在本例中为您的列表):
Dir[integer1].Add(integer2);
如果您正在寻找的话,您会在其他答案中找到更多完整的代码段。
答案 3 :(得分:0)
您需要添加List<int>
作为值。它会像这样工作:
if (!Dir.ContainsKey(integer1)) {
Dir.Add(integer1, new List<int>());
}
var list = Dir[integer1];
list.Add(integer2);
答案 4 :(得分:0)
如果您想添加项目,只需使用此代码
即可(而dic
是您的Dictionary<Int32, List<Int32>>
)
if (dic.ContainsKey(yourKey))
{
dic[yourKey].Add(yourInt);
} else {
dic[yourKey] = new List<int> { yourInt };
}