执行时间需要30多分钟,循环遍历两个词典列表

时间:2012-05-29 22:27:09

标签: c# list sorting dictionary compare

目前我的程序是这样的:

List<Dict<string, double>> GroupA;
List<Dict<string, double>> GroupB;
* All dictionaries have the same keys but with dif values

foreach(string key in GroupA[0])
{
      List<double> GroupA_Values;
      foreach(Dict d in GroupA)
          GroupA_Values.add(d[key]);

      List<double> GroupB_Values;
      foreach(Dict d in GroupB)
          GroupB_Values.add(d[key]);

      CompareValuesFunction(GroupA_Values, GroupB_Values);
}

有更有效的方法吗?

1 个答案:

答案 0 :(得分:0)

您应该拥有Dictionary<string, List<string>>,而不是拥有字典列表,其中值是与特定键相关联的所有值的列表。

目前,您要为每个字典值处理每个字典中的每个值。这根本不能很好地扩展。通过将所有值复制到列表,所有内容都将按比例缩放,而不是多项式。

此设置也会消耗更少的内存(字典比其他数据结构消耗更多内存,以便获得快速的搜索速度)。

正如评论中所提到的,如果我们更了解CompareValuesFunction(即看到它的代码),我们可能会建议进一步改进。