在词典中添加到词典的最有效方法

时间:2015-07-09 16:50:38

标签: c# dictionary

在用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中并向其添加新条目。然后,将更新后的字典放回到关键位置,但它一直让我犯错误。

4 个答案:

答案 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()构建代码怎么样?一次审查收集的呼吁将更有效......