gpt4 book ai didi

c# - 比较字典>

转载 作者:行者123 更新时间:2023-11-30 21:18:53 25 4
gpt4 key购买 nike

我将两个字典(dic1 和 dic2)与从 dic2 获取值的规则进行比较,其中键匹配但值不匹配或 dic2 中缺少键。
不需要遍历 dic2 以查找 dic1 中的缺失值/不同值。

下面的代码工作正常我想知道是否有更好的方法使用 .NET 2.0(无 LINQ)。

如果需要优化,哪个选项更好?

Dictionary<string,List<foo>> dic1 = new Dictionary<string,List<foo>>();
Dictionary<string,List<foo>> dic2 = new Dictionary<string,List<foo>>();

dic1.add("1", new foo("a"));
dic1.add("2", new foo("b"));
dic1.add("3", new foo("c"));
dic1.add("3", new foo("c1"));
dic1.add("4", new foo("d"));

dic2.add("1", new foo("a"));
dic2.add("2", new foo("b1"));
dic2.add("3", new foo("c"));
dic2.add("3", new foo("c2"));

//I write code which allow duplicate key in dictionary

选项 1

foreach (KeyValuePair<string, List<foo>> var in dic1)
{
if (dic2.ContainsKey(var.Key))
{
List<foo> tempList = var.Value.FindAll(delegate(foo s)
{
return !dic2[var.Key].Contains(s);
});
result.AddRange(tempList);
}
else
{
result.Add(var.Value);
}

}

选项 2

List<string> list1key = new List<string>(dic1.Keys);

list1key.ForEach(delegate(string key)
{
if (dic2.ContainsKey(key))
{
List<foo> tempList = dic1[key].FindAll(delegate(foos)
{
return !dic2[key].Contains(s);
});
result.AddRange(tempList);
}
else
{
result.AddRange(dic1[key]);
}
});

最佳答案

如果您在访问 dic2 时使用 TryGetValue,则可以使用任一选项加快速度,因此您只需执行一次 key 查找。

您的第一个选项看起来更简单并且可能更快,我会同意的。干杯

关于c# - 比较字典<string,List<object>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4029244/

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