如何在C#中使用foreach对嵌套字典进行乘加运算?
用foreach实现嵌套字典的对应键值乘加运算
嗨,这就帮你搞定这个计算需求!针对你给出的嵌套字典,我们可以通过两层foreach循环来实现对应键值的乘加运算,具体代码和思路如下:
完整实现代码
Dictionary<int, Dictionary<string, double>> dictionary = new Dictionary<int, Dictionary<string, double>> { { 0, new Dictionary<string, double> { { "eat",0.15 }, { "food", 0.16 } } }, { 1, new Dictionary<string, double> { { "eat",0.32 }, { "food", 0.2 } } }, }; double totalSum = 0; // 获取所有内层字典共享的键(假设所有内层字典键一致,若有差异可调整为取交集) var sharedKeys = dictionary.First().Value.Keys; // 第一层循环:遍历每个共享的字符串键 foreach (var key in sharedKeys) { double keyProduct = 1; // 第二层循环:遍历每个外层字典的内层字典,计算当前键的乘积 foreach (var innerDict in dictionary.Values) { keyProduct *= innerDict[key]; } // 将当前键的乘积累加到总和 totalSum += keyProduct; } Console.WriteLine(totalSum); // 输出结果:0.08
代码说明
- 获取共享键:这里我们取第一个内层字典的键集合,前提是所有外层字典对应的内层字典都包含相同的键(你的示例完全符合这个情况)。如果实际场景中存在键不统一的情况,可以用集合交集来获取共同键,比如:
// 计算所有内层字典的键的交集 var sharedKeys = dictionary.Values.Aggregate( (currentCommonKeys, nextDict) => currentCommonKeys.Intersect(nextDict.Keys).ToList() ); - 两层foreach逻辑:
- 外层循环遍历每个共享键,比如
"eat"和"food"; - 内层循环遍历每个外层字典的内层字典,取出当前键对应的值并相乘,得到该键的乘积;
- 最后把每个键的乘积加到总和里,就得到了你要的
0.15*0.32 + 0.16*0.2的结果。
- 外层循环遍历每个共享键,比如
内容的提问来源于stack exchange,提问作者Fransiskus Cahyadi Putra
相关产品推荐
相关产品推荐

