将字典细分为较小的部分
本文关键字:字典 细分 | 更新日期: 2023-09-27 18:33:18
我正在尝试将字典细分为更小的部分。我的方法有效,我只是想知道是否有更有效的方法。为了示例,字典有 10 个元素,但我的代码最多可以有 1000 个元素,并且将分批 50 个,我将传递给 api。
我的探索有没有更有效的方法可以做到这一点...?
int divideamount = 2;
Dictionary<string, string> dictionary = new Dictionary<string, string>();
dictionary.Add("cat1", "cat");
dictionary.Add("dog2", "cat");
dictionary.Add("cat3", "cat");
dictionary.Add("dog4", "cat");
dictionary.Add("cat5", "cat");
dictionary.Add("dog6", "cat");
dictionary.Add("cat7", "cat");
dictionary.Add("dog8", "cat");
dictionary.Add("cat9", "cat");
dictionary.Add("dog10", "cat");
var divided_dictionary
= dictionary.Select((value, index) => new { Index = index, Value = value })
.GroupBy(x => x.Index / divideamount)
.Select(g => g.Select(x => x.Value).ToDictionary(x => x.Key, x => x.Value))
.ToList();
foreach (Dictionary<string, string> division in divided_dictionary)
{
// do some work
}
提前感谢您的任何帮助或意见。
您可以使用 moreLINQ 库中Partition
方法。
var divided_dictionary
= dictionary.Partition(divideamount)
.Select(x => x.ToDictionary(i => i.Key, i => i.Value));
不久前,我写了一篇关于使用 LINQ 对集合进行分区的博客文章。您可能会发现它很有用:使用 LINQ 对集合进行分区:不同的方法、不同的性能、相同的结果。