【问题标题】:Adding a key value pair in a dictionary inside a dictionary在字典内部的字典中添加键值对
【发布时间】:2016-10-29 13:41:59
【问题描述】:

我有一个字典 ,它有一个字符串和一个字典 的映射。如何在内部字典 中添加键值对?

Dictionary <string,object> dict = new Dictionary <string,object>();
Dictionary <string,int> insideDict = new Dictionary <string,int>();
// ad some values in insideDict
dict.Add("blah",insideDict);

所以现在字典有一个用字符串映射的字典。现在我想分别向 insideDict 添加值。 我试过了

dict["blah"].Add();

我哪里错了?

【问题讨论】:

  • @GiladGreen 已添加。
  • 将其与我的答案进行比较。您在顶部 .Add 之前添加的注释不正确 - 该行向外部字典添加了一个带有键“blah”和 insideDict 作为其值的项目。第二个 .Add - 您需要为该函数提供一些参数 - 它需要另一个键和值(用于内部字典)
  • @GiladGreen 该评论是针对第二条语句的,意思是为 innerDict 添加一些键值对

标签: c# dictionary c#-4.0 key-value


【解决方案1】:

你的意思是这样的吗?

var collection = new Dictionary<string, Dictionary<string, int>>();
collection.Add("some key", new Dictionary<string, int>());
collection["some key"].Add("inner key", 0);

【讨论】:

  • 我希望能够向 innerDict 添加新的键值对。
  • 就像我的第三行。当我执行 collection["some key"] 时,我得到了该键值的引用——它是 int 字典的字符串。然后 .Add("some other key", 2);
【解决方案2】:

类似下面的东西

Dictionary<string, object> dict = new Dictionary<string, object>();
dict.Add("1", new Dictionary<string, int>());

(OR) 如果你已经定义了内部字典,那么

Dictionary<string, object> dict = new Dictionary<string, object>();
Dictionary<string, int> innerdict = new Dictionary<string, int>();
dict.Add("1", innerdict); // added to outer dictionary
string key = "1";
((Dictionary<string, int>)dict[key]).Add("100", 100); // added to inner dictionary

根据您的评论 尝试过但在某处搞砸了

您没有得到它的原因是您忘记将内部字典值转换为Dictionary&lt;string, int&gt;,因为您的外部字典值是object。您应该将外部字典声明为强类型。

dict.Add("blah",insideDict); //forgot casting here

【讨论】:

  • 我希望能够在 innerDict 已经有一些值的地方添加新的键值对。
  • @vishallc,添加了解释为什么你搞砸了。您可以再次检查答案。
【解决方案3】:
Dictionary<string, Dictionary<string,TValue>> dic = new Dictionary<string, Dictionary<string,TValue>>();

将 TValue 替换为您的值类型。

【讨论】:

    猜你喜欢
    • 2018-05-27
    • 2014-09-14
    • 2019-11-07
    • 2018-07-06
    • 1970-01-01
    • 1970-01-01
    • 2019-01-25
    • 1970-01-01
    • 2021-01-15
    相关资源
    最近更新 更多