gpt4 book ai didi

c# - 如何在不在键上获取 ArgumentException 的情况下合并两个字典?

转载 作者:行者123 更新时间:2023-12-02 15:45:03 27 4
gpt4 key购买 nike

当我尝试合并两个字典时,我不知道如何将键和值保留在字典中。由于 key 重复,我不断收到 ArgumentException。当键匹配时,我只想通过 =+ kvp.value;

添加值

我有一个字典列表

第一个字典 = kvp = "jump", 2;

2ndDictionary = kvp = "jump", 4;

我喜欢合并它们并得到类似的东西:字典 = kvp = "jump", 6;

我以后可以添加到我的词典列表中

我尝试运行我在 StackOverflow 线程中找到的东西。

foreach (var dict in listOfDict)
{
dict.SelectMany(d => d)
.ToLookup(pair => pair.Key, pair => pair.Value)
.ToDictionary(group => group.Key, group => group.First());
}

但我不断得到。

cannot be inferred from the usage. Try specifying the type argumentsexplicitly.

我想避免将所有键和所有值都放在单独的列表中,然后循环遍历以在新字典中添加键和值。

最佳答案

使用 Linq 对双值字典列表的最简单扩展:

public static class ExtListOfDict {
public static Dictionary<TKey, double> SumValue1<TKey>(this List<Dictionary<TKey, double>> list)
=> list?.SelectMany(i => i).ToLookup(i => i.Key, i => i.Value).ToDictionary(i => i.Key, i => i.Sum());

}

没有 linq:

public static Dictionary<TKey, double> SumValue2<TKey>(this List<Dictionary<TKey, double>> list) {
if(list?.Count > 0) {
var dir = new Dictionary<TKey, double>(list[0]);
for(var i = 1; i < list.Count; i++)
foreach (var kv in list[i])
if (dir.TryGetValue(kv.Key, out double sum))
dir[kv.Key] = sum + kv.Value;
else
dir.Add(kv.Key, kv.Value);
return dir;
} else
return null;
}

关于c# - 如何在不在键上获取 ArgumentException 的情况下合并两个字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74503314/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com