遍历字符串数组,并用<key,value>作为单词,encenenceCount填充字典类型-

我的问题如下-

我正在创建如下数组(请参阅图片---> https://pasteboard.co/JzJohvs.png)-

我想计算该数组中单词的出现次数,并创建一个合适的arraylist或字典。

我的代码-

    public List<Dictionary<string,int>> GetWordCount(string[] myArray)
    {
        try
        {
            var countedObj = new List<Dictionary<string,int>>();

            Array.Sort(myArray);

            var counts = myArray.GroupBy(w => w).Select(g => new { Word = g.Key,Count = g.Count() }).ToList();

            for(int index=0; index<counts.Count; index++)
            {
                var item = counts.ElementAt(index);

                var itemkey = item.Word;

                var itemvalue = item.Count;

                countedObj.Add(new Dictionary<string,int>()
                {
                    
                });
            }

            return countedObj;
        }
        catch(Exception exp)
        {
            throw exp.InnerException;
        }
    }

我需要创建一个字典列表,例如

生活3 固有的,2 有用的1 受过教育的5岁 葡甘聚糖2 等等……

基本上是键值对类型。我相信您能达到我基本上打算实现的目标。我可以根据需要在以后进行迭代和处理。我怎样才能做到这一点?需要哪种类型的迭代?一些相关的代码建议。

nt890121 回答:遍历字符串数组,并用<key,value>作为单词,encenenceCount填充字典类型-

您可以按单词分组,选择每个组(您已经在做的)的计数,然后将其转换为字典,以单词为键,计数为值:

Dictionary<string,int> wordCounts = myArray
    .GroupBy(word => word)
    .ToDictionary(group => group.Key,group => group.Count());

因此该方法可以重写为:

public static Dictionary<string,int> GetWordCount(string[] myArray)
{
    return myArray?
        .GroupBy(word => word)
        .ToDictionary(group => group.Key,group => group.Count());
}

然后示例用法可能是:

var words = new[] {"one","two","three","three"};

foreach (var item in GetWordCount(words))
{
    Console.WriteLine($"{item.Key} = {item.Value}");
}

输出

one = 1
two = 2
three = 3
本文链接:https://www.f2er.com/1241763.html

大家都在问