You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:59:19