在用Java完成任务后,我现在需要在C#中生成相同的结果,我需要一些帮助。我正在使用的对象是:
Dictionary<int, Dictionary<String, List<int>>> full_map = new Dictionary<int, Dictionary<String, List<int>>>();
如果我已经在主词典的密钥中存储了某些内容,我想在内部词典中添加一个条目。
为了解决这个问题,我从逻辑开始,
if (full_map.ContainsKey(int.Parse(pop_cy_st_intrst[0])))
{
Dictionary<String, List<int>> temp = new Dictionary<String, List<int>>();
//this is the logic I can't figure out.
}
else
{
full_map.Add(int.Parse(pop_cy_st_intrst[0]), temp_entry);
}
我对if语句的思考过程是将现有字典存储在temp中并向其添加新条目。然后,将更新后的字典放回到关键位置,但它一直让我犯错误。
答案 0 :(得分:0)
我相信这会奏效:
if (full_map.ContainsKey(int.Parse(pop_cy_st_intrst[0])))
full_map[int.Parse(pop_cy_st_intrst[0])].Add(innerKeyStr, innerValueList);
else
full_map.Add(int.Parse(pop_cy_st_intrst[0]), new Dictionary<string, List<int>>());
因此,如果full_map
外部字典包含密钥,那么您可以根据该密钥访问内部字典并添加您想要的任何内容(我不知道内部密钥是否为pop_cy_st_intrst[0]
好吧,所以我把它留给你了。)
如果full_map
不包含密钥,则为该密钥添加新的内部字典。
如果你想添加到内部词典 那个内部词典是否已经存在,那么最后一行可能是
full_map.Add(int.Parse(pop_cy_st_intrst[0]), new Dictionary<string, List<int>>() { { innerKeyStr, innerValueList } });
答案 1 :(得分:0)
使用主词典的索引访问内部词典。
Dictionary<int, Dictionary<String, List<int>>> full_map =
new Dictionary<int, Dictionary<String, List<int>>>();
var index = int.Parse("10");
if (full_map.ContainsKey(index))
{
if (full_map[index] == null)
{
full_map[index] = new Dictionary<string, List<int>>();
}
}
else
{
full_map.Add(index, new Dictionary<string,List<int>>());
}
full_map[index].Add("Blah", new List<int>());
答案 2 :(得分:0)
我看到那里有几个答案。这是我在发布时正在工作的那个。为了清楚起见,添加了评论等。
Dictionary<int, Dictionary<String, List<int>>> full_map = new Dictionary<int, Dictionary<String, List<int>>>();
int key = 4;
if (full_map.ContainsKey(key))
{
// the main dictionary has an entry
// temp is the innerdictionary assigned to that key
var temp = full_map[key];
// add stuff to the inner dictionary
temp.Add("string key",new List<int>());
}
else
{
// the main dictionary does not have the key
// create an inner dictionary
var innerDictionary = new Dictionary<string,List<int>>();
innerDictionary.Add("string key", new List<int>());
// add it to the map with the key
full_map.Add(key,innerDictionary);
}
答案 3 :(得分:0)
使用TryGetValue()构建代码怎么样?一次审查收集的呼吁将更有效......