[英]finding the max of value for each key in multiple dictionaries
我有3個字典,需要創建一個新字典,該字典應包含相同鍵的最大數量的值。 例如r1具有(10,100),r2具有(10,200),r3具有(10,500)。 新字典應該有10、500。
public Dictionary<Double, Double> r1 = new Dictionary<Double, Double>();
public Dictionary<Double, Double> r2 = new Dictionary<Double, Double>();
public Dictionary<Double, Double> r3 = new Dictionary<Double, Double>();
new[] { r1, r2, r3 }.SelectMany(p => p).GroupBy(p => p.Key)
.ToDictionary(g => g.Key, g => g.Max(p => p.Value));
編輯:
class Program
{
static void Main()
{
var r1 = new Dictionary<double, double> { { 10, 200 } };
var r2 = new Dictionary<double, double> { { 10, 300 } };
var r3 = new Dictionary<double, double> { { 10, 500 } };
var r = Merge(r1, r2, r3);
foreach (var p in r)
Console.WriteLine("{0}: {1}", p.Key, p.Value);
}
static IDictionary<double, double> Merge(params Dictionary<double, double>[] dicts)
{
return dicts.SelectMany(p => p).ToLookup(p => p.Key, p => p.Value).ToDictionary(p => p.Key, p => p.Max());
}
}
也許是這樣的:
r1.Concat(r2).Concat(r3)
.GroupBy(p => p.Key)
.Select(g => new KeyValuePair<double, double>(g.Key, g.Max(p => p.Value)))
.ToDictionary(p => p.Key, p => p.Value);
未經測試,但想法是:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.