【发布时间】:2018-09-02 23:18:49
【问题描述】:
如何最有效地比较两个字典是否相等? -- 除了对键的暴力迭代,尝试查找和比较值
var d1 = new Dictionary<string,int>();
d1.Add("a",2);
d1.Add("b",1);
d1.Add("c",1);
var d2 = new Dictionary<string,int>();
d2.Add("c",1);
d2.Add("b",1);
d2.Add("a",2);
如何最有效地比较平等?
不是这样的蛮力:
static bool CompareDictionaries(Dictionary<string,int> d1, Dictionary<string,int> d2)
{
if (d1.Count != d2.Count) return false;
foreach(string key in d1.Keys)
{
if (!d2.ContainsKey(key)) return false;
if (d1[key] != d2[key]) return false;
}
return true;
}
【问题讨论】:
-
如果其中一个字典区分大小写而另一个不区分大小写,您希望发生什么?在这种情况下,您现有的代码将无法“工作”(例如,它会说某些字典是相同的,而实际上它们不是)-我只是在检查这是否是故意的。
-
@mjwills 你必须通过比较器对吗?
-
@ParrishHusband 这取决于 OP 想要什么。 最有可能他们想要stackoverflow.com/a/9547410/34092。
-
@baltostar: 是否假设字典包含相同的键
标签: c# dictionary compare