我需要使用NET Framework 2.0收集字典。我不是这门语言的专家。词典必须包含有关每天的特殊信息。 我简化了示例,并在没有IDE的情况下创建了该示例,如果不准确,请谅解。
Dictionary<string, int> copy = new Dictionary<string,int>();
Dictionary<string, Dictionary<string, int>> dayResult = new Dictionary<string, Dictionary<string, int>>();
//initialization
for(int i = 0; i < 10 ; i++){
copy.Add(i.ToString(),0);
}
for(int day = 0; day < 3000; day++) {
dayResult.Add(day.ToString(), copy);
}
for(int k = 0; k < 1000; k++){
for(int day = 0; day < 3000; day++) {
copy = new Dictionary<string, int>(dayResult[day.ToString()]);
copy[randomValue.ToString()]++;
dayResult[day.ToString()] = copy;
}
}
我遇到内存不足的异常。但是,如果我更改了行
copy = new Dictionary(dayResult[day.ToString()]);
到
copy = dayResult[day.ToString()];
我每天都会得到相同的结果,但是我的randomValue每次从0更改为9,这就是不可能的原因。
仔细阅读
我正在尝试每天收集数据。此数据有很多键,并且键具有不同的频率。我需要了解在特定日期哪些键集与特定频率相遇。我在做什么错了?
PS
我在特殊的IDE中工作,无法控制“ for”周期:
for(int k = 0; k < 1000; k++)
for(int day = 0; day < 3000; day++)
这就是为什么我只能保存和初始化数据的原因。
答案 0 :(得分:0)
您可以使用linq来获取嵌套字典:
List<int> firstList = (new string('\0', 100)).Select((x,i) => i).ToList();
List<int> secondList = (new string('\0', 1000)).Select((x, i) => i).ToList();
Random rand = new Random();
Dictionary<string, Dictionary<string, int>> dayResult = secondList
.GroupBy(x => x.ToString(), y => firstList
.GroupBy(a => a.ToString(), b => rand.Next())
.ToDictionary(a => a.Key, b => b.FirstOrDefault()))
.ToDictionary(x => x.Key, y => y.FirstOrDefault());