Соответствие 2 словарям и замена значений - PullRequest
0 голосов
/ 05 июня 2018

У меня есть словарь, как показано ниже -

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

У меня есть другой словарь myDict2 такой же подписи, как myDict1 .

myDict1 и myDict2 , имеющие одинаковые значения.например, -

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

После операции myDict2 обновляется (или, лучше сказать, я получаю myDict2 в качестве возвращаемого значения операции), и оно содержит значение, указанное ниже -

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

Мне нужно обновить myDict1 , сопоставив ключи myDict2 .здесь ключи строковые "Data1" и int 1 .

ПРИМЕЧАНИЕ: здесь изменяется только значение внутреннего словаря.

Может кто-нибудь подсказать, как это сделать лучше?

1 Ответ

0 голосов
/ 05 июня 2018

Попробуйте это:

//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];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...