匹配2个词典并替换值

时间:2018-06-05 05:37:56

标签: c# dictionary

我有一个字典如下 -

Dictionary<string, Dictionary<int, int>> myDict1;

我有另一个与 myDict1 签名相同的字典 myDict2

myDict1 myDict2 具有相同的值。 例如 -

{"Data1", {1 , 0}};

操作 myDict2 后更新(或更好地说我接收myDict2作为操作的返回值)并且它包含如下所示的值 -

{"Data1", {1 , 10}};

我必须通过匹配 myDict2 的键来更新 myDict1 。 这里的键是字符串&#34; Data1&#34; 和int 1

注意:此处只有内部词典的值会发生变化。

有人可以建议如何以更好的方式做到这一点吗?

1 个答案:

答案 0 :(得分:1)

试试这个:

//sample data
Dictionary<string, Dictionary<int, int>> myDict1 = new Dictionary<string, Dictionary<int, int>>();            
myDict1.Add("data1", new Dictionary<int, int> { { 1, 0 }, { 2, 0 }, { 3, 0 } });
myDict1.Add("data10", new Dictionary<int, int> { { 2, 10 }, { 3, 11 }, { 4, 0 } });

Dictionary<string, Dictionary<int, int>> myDict2 = new Dictionary<string, Dictionary<int, int>>();
myDict2.Add("data1", new Dictionary<int, int> { { 1, 1 }, {3, 1 }, { 4, 1 } });
myDict2.Add("data2", new Dictionary<int, int> { { 2, 0 } });

//here we will iterate only through common keys (that both dictionaries have it)
foreach(string commonKey in myDict1.Keys.Intersect(myDict2.Keys))
    foreach(int intKey in myDict1[commonKey].Keys.Intersect(myDict2[commonKey].Keys))
        myDict2[commonKey][intKey] = myDict1[commonKey][intKey];