0

ほぼ 100000 エントリを含むテキスト ファイルがあります。それらはすべて、次のような特定のパターンにあります
word1 word2 word3 word4

ただし、これらのエントリの多くは重複しており、すべての単語が同じです。一意のものの配列またはリストを読み取って形成しようとするとき、中間ハッシュ セットを使用しています。そして、それはかなりうまく機能します。
しかし、本質的に達成したいのは、word2 の一意のエントリのみです。word2 が共通で他のすべてが異なる場合と同様に、エントリのいずれかを保持したいと思います。
例えば
cat dog lion tiger
cat dog deer bear
mouse rat bear deer
lion tiger cat dog
cat dog deer bear

この場合の望ましい出力は次のようになります。
cat dog lion tiger
mouse rat bear deer
lion tiger cat dog

また
cat dog deer bear
mouse rat bear deer
lion tiger cat dog

現在、ハッシュセットが提供しているものは次のとおりです。

cat dog lion tiger
cat dog deer bear
mouse rat bear deer
lion tiger cat dog

データセットが大きい場合、これを効率的に達成する方法についての提案。ここで唯一のオプションは正規表現を使用していますか? 私はC#を使用しています。

4

2 に答える 2

1

データを調べて、2 番目の単語を辞書に入れて、それが以前に出現したかどうかを確認します。コード例:

    string[] file = {   "cat dog lion tiger",
                    "cat dog deer bear",
                    "mouse rat bear deer",
                    "lion tiger cat dog",
                    "cat dog deer bear"};

    Dictionary<string, string> dict = new Dictionary<string, string>();

    List<string> lst = new List<string>();

    foreach (string s in file)
    {
        string[] words = s.Split(' ');
        // assumption - thare are at least 2 words in a line - validate it
        if (!dict.ContainsKey(words[1]))
        {
            lst.Add(s);
            dict.Add(words[1], words[1]);
        }
    }

    foreach (string s1 in lst)
        Console.WriteLine(s1);
于 2013-07-21T06:02:18.787 に答える