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

本文关键字:字典 有效 方法 添加 | 更新日期: 2023-09-27 18:01:48

在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中,并向其中添加新的条目。然后,将更新后的字典放回键位置,但它总是抛出错误。

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

我相信这是可行的:

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 } });

使用主字典的索引访问内部字典

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>());

我看到有一些答案。这是照片发布时我正在做的。为清晰起见添加注释等。

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);
}

如何使用TryGetValue()构建代码?