C# 如何在列表中统计相似单词?
我有一个C#列表,上面有很多相似的名字,我想数一数所有相似的单词 范例 假设列表中有这些值C# 如何在列表中统计相似单词?,c#,asp.net,C#,Asp.net,我有一个C#列表,上面有很多相似的名字,我想数一数所有相似的单词 范例 假设列表中有这些值 one,one,one,two,two,four,four,four 然后我想这样计算 one 3 two 2 four 3 如何从列表中计算这样的值。我会用逗号分割字符串,循环遍历所有结果,并将每个单词添加到哈希表或字典中,使其值为1。如果单词(键)已存在,则增加该值 string[] values = "one,one,one,two,two,four,four,four".Split(',')
one,one,one,two,two,four,four,four
然后我想这样计算
one 3
two 2
four 3
如何从列表中计算这样的值。我会用逗号分割字符串,循环遍历所有结果,并将每个单词添加到哈希表或字典中,使其值为1。如果单词(键)已存在,则增加该值
string[] values = "one,one,one,two,two,four,four,four".Split(',');
var counts = new Dictionary<string, int>();
foreach (string value in values) {
if (counts.ContainsKey(value))
counts[value] = counts[value] + 1;
else
counts.Add(value, 1);
}
string[]values=“一,一,一,二,二,四,四,四”。拆分(',');
var counts=新字典();
foreach(值中的字符串值){
if(计数。容器(值))
计数[值]=计数[值]+1;
其他的
计数。添加(值,1);
}
或者,如果您愿意,这里有一个LINQ解决方案
var counts = values.GroupBy<string, string, int>(k => k, e => 1)
.Select(f => new KeyValuePair<string, int>(f.Key, f.Sum()))
.ToDictionary(k => k.Key, e => e.Value);
var counts=values.GroupBy(k=>k,e=>1)
.Select(f=>newkeyvaluepair(f.Key,f.Sum()))
.ToDictionary(k=>k.Key,e=>e.Value);
我会用逗号分割字符串,循环遍历所有结果,并将每个单词添加到哈希表或字典中,值为1。如果单词(键)已存在,则增加该值
string[] values = "one,one,one,two,two,four,four,four".Split(',');
var counts = new Dictionary<string, int>();
foreach (string value in values) {
if (counts.ContainsKey(value))
counts[value] = counts[value] + 1;
else
counts.Add(value, 1);
}
string[]values=“一,一,一,二,二,四,四,四”。拆分(',');
var counts=新字典();
foreach(值中的字符串值){
if(计数。容器(值))
计数[值]=计数[值]+1;
其他的
计数。添加(值,1);
}
或者,如果您愿意,这里有一个LINQ解决方案
var counts = values.GroupBy<string, string, int>(k => k, e => 1)
.Select(f => new KeyValuePair<string, int>(f.Key, f.Sum()))
.ToDictionary(k => k.Key, e => e.Value);
var counts=values.GroupBy(k=>k,e=>1)
.Select(f=>newkeyvaluepair(f.Key,f.Sum()))
.ToDictionary(k=>k.Key,e=>e.Value);
词典列表计数=新建词典();
for(int i=0;i
词典列表计数=新建词典();
for(int i=0;i
以下是一个基于Linq的解决方案:
string s = "one,one,one,two,two,four,four,four";
List<string> list = s.Split(',').ToList();
Dictionary<string, int> dictionary = list.GroupBy(x => x)
.ToDictionary(x => x.Key, x => x.Count());
foreach (var kvp in dictionary)
Console.WriteLine("{0}: {1}", kvp.Key, kvp.Value);
这种解决方案没有利用公共值是连续的这一事实。如果总是这样的话,可以编写一个稍微快一点的解决方案,但对于短列表或项目可以按任意顺序出现,这也没问题。以下是一个基于Linq的解决方案:
string s = "one,one,one,two,two,four,four,four";
List<string> list = s.Split(',').ToList();
Dictionary<string, int> dictionary = list.GroupBy(x => x)
.ToDictionary(x => x.Key, x => x.Count());
foreach (var kvp in dictionary)
Console.WriteLine("{0}: {1}", kvp.Key, kvp.Value);
这种解决方案没有利用公共值是连续的这一事实。如果总是这样,则可以编写一个稍微快一点的解决方案,但对于短列表或项目可以按任意顺序排列,则可以这样做。对于列表,您可以执行以下操作(未经测试):
List List=新列表()
{
“一个”,
“一个”,
“两个”,
//等
}
字典d=新字典();
foreach(列表中的字符串s)
{
如有(丁)
d、 增加(s,1);
其他的
d[s]++;
}
首选的(也是更干净的)方法是使用GroupBy和Count与Linq一起实现这一点,但我目前没有键入语法的类型
祝你好运 对于列表,您可以执行以下操作(未经测试):
List List=新列表()
{
“一个”,
“一个”,
“两个”,
//等
}
字典d=新字典();
foreach(列表中的字符串s)
{
如有(丁)
d、 增加(s,1);
其他的
d[s]++;
}
首选的(也是更干净的)方法是使用GroupBy和Count与Linq一起实现这一点,但我目前没有键入语法的类型
祝你好运 它们保证是逗号分隔的吗?它们保证是逗号分隔的吗?您需要为值X-)添加修剪,尽管我个人会使用counts[value]++;您需要为值X-)添加修剪,尽管我个人会使用counts[value]++;哎哟,你错过了比赛!符号。哎呀,你错过了!象征。