0

単語のリストがあり、各単語を数えたいので、単語の出現回数の降順で上位1000を選択します。このタスクを実行するための高速な方法はありますか。全てに感謝。

for (int j = 0; j < tokens.Length; j++)
{
  if (!yy.ContainsKey(tokens[j]))
                    yy.Add(tokens[j], 1);
                else
                    yy[tokens[j]]++;

 }

Listで辞書を変えたい。

4

2 に答える 2

4

LINQ を使用して実行できます。

var query = words.GroupBy(word => word)
                 .OrderByDescending(g => g.Count())
                 .Select(g => g.Key)
                 .Take(1000);
于 2012-05-05T16:07:06.620 に答える
1
List<string> yourList = ... 

var top1000 = yourList.GroupBy(s => s).Select(g => new { Value = g.Key, Count = g.Count() })
                      .OrderByDescending(p => p.Count).Take(1000);
于 2012-05-05T16:07:00.297 に答える