遍历字符串数组并用 <key, value> 作为单词填充字典类型,occurenceCount --
Iterating through a string array and filling a dictionary type with <key, value> as word, occurenceCount --
我的问题如下-
我正在创建一个数组如下(参考图片---> https://pasteboard.co/JzJohvs.png)-
我想计算这个数组中单词的出现次数,并创建一个合适的数组列表或字典。
我的代码-
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
等等……
基本上是键值对类型。我相信你会得到我基本上想要实现的目标。我可以根据需要在以后迭代和处理的东西。我怎样才能做到这一点?需要什么类型的迭代?这里有一些相关的代码建议。
您可以按单词分组,select 每组的计数(您已经在做),然后将其转换为以单词为键、计数为值的字典:
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", "two", "three", "three", "three"};
foreach (var item in GetWordCount(words))
{
Console.WriteLine($"{item.Key} = {item.Value}");
}
输出
one = 1
two = 2
three = 3
我的问题如下-
我正在创建一个数组如下(参考图片---> https://pasteboard.co/JzJohvs.png)-
我想计算这个数组中单词的出现次数,并创建一个合适的数组列表或字典。
我的代码-
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 等等……
基本上是键值对类型。我相信你会得到我基本上想要实现的目标。我可以根据需要在以后迭代和处理的东西。我怎样才能做到这一点?需要什么类型的迭代?这里有一些相关的代码建议。
您可以按单词分组,select 每组的计数(您已经在做),然后将其转换为以单词为键、计数为值的字典:
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", "two", "three", "three", "three"};
foreach (var item in GetWordCount(words))
{
Console.WriteLine($"{item.Key} = {item.Value}");
}
输出
one = 1
two = 2
three = 3