将字典细分为较小的部分

本文关键字:字典 细分 | 更新日期: 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 对集合进行分区:不同的方法、不同的性能、相同的结果。