合并两个字典,但值加起来

问题描述

我有两个字典,每个字典都有一个字符串作为键,一个int作为值,我想合并两个字典,但是如果有重复的键,这些值就加起来了,我想到了使用循环填充第三个字典但是有一种更简单的方法可以减少时间

预先感谢您:D

解决方法

您可以使用Linq:

using System;
using System.Collections.Generic;
using System.Linq;

class MainClass {
    public static void Main(string[] args) {
        IDictionary <string,int> dictA = new Dictionary <string,int>();
        dictA.Add("Apple",2);
        dictA.Add("Banana",1);

        IDictionary <string,int> dictB = new Dictionary <string,int>();
        dictB.Add("Apple",1);
        dictB.Add("Cherry",5);

        IDictionary <string,int> dictC = dictA.Concat(dictB)
            .GroupBy(i => i.Key)
            .ToDictionary(i => i.Key,i => i.Sum(j => j.Value));

        foreach(KeyValuePair <string,int> kvp in dictC) {
            Console.WriteLine("Key: {0},Value: {1}",kvp.Key,kvp.Value);
        }
    }
}

输出:

Key: Apple,Value: 3
Key: Banana,Value: 1
Key: Cherry,Value: 5