【问题标题】:Merging dictionaries with similar keys but distinct values in C#在 C# 中合并具有相似键但不同值的字典
【发布时间】:2014-01-23 22:53:41
【问题描述】:

考虑以下字典:

Dictionary<string, double> dict1 = new Dictionary<string, double>()
Dictionary<string, double> dict2 = new Dictionary<string, double>()

这两个字典有完全相同的键,但值不同。我想通过以下方式合并两个字典:创建一个与dict1dict2具有相同键的新字典,其中值是由dict1中的匹配值和匹配值组成的数组在dict2,每个键。

我可以轻松地循环执行此操作,但我希望有一种更有效的方法来执行此操作。

任何帮助将不胜感激!谢谢!

【问题讨论】:

  • 有什么理由使用数组而不是 Tuple&lt;double, double&gt; 例如?
  • “高效”是什么意思?
  • @JonSkeet 我对Tuple 结构完全不熟悉,但我愿意使用它!

标签: c# dictionary


【解决方案1】:

这假设它们确实具有相同的键:

var merged = dict1.ToDictionary(pair => pair.Key,
                                pair => new[] { pair.Value, dict2[pair.Key] });

或者创建一个Dictionary&lt;string, Tuple&lt;double, double&gt;&gt;

var merged = dict1.ToDictionary(pair => pair.Key,
                                pair => Tuple.Create(pair.Value, dict2[pair.Key]));

如果您要在同一方法中使用它,或者使用匿名类型使其更简洁:

var merged = dict1.ToDictionary(pair => pair.Key,
                                pair => new { First = pair.Value,
                                              Second = dict2[pair.Key]) });

正如 cmets 中所述,这些仍然在内部循环 - 它们不会比自己编写循环更高效,但它更易于阅读。

【讨论】:

    猜你喜欢
    • 2020-12-18
    • 1970-01-01
    • 2021-12-15
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多