2

数値の値を別の辞書にコピーする際に問題があります。すべてうまくいきますが、キーが既に存在する場合は、リストから別の辞書に値を追加するとすぐに. 同じ値が辞書に追加され、通過する可能性があることを理解していません。

   foreach (KeyValuePair<string, List<int>> record in dictonaryUnStem)

        {
            arrayWord = record.Key.ToCharArray();
            st.add(arrayWord);
            stemWord = st.stem();

            if (!dictonaryStem.ContainsKey(stemWord))
            {
                dictonaryStem.Add(stemWord, record.Value);
            }
            else
            {
                foreach (int i in record.Value)
                {
                    dictonaryStem[stemWord].Add(i);
                }
            }
        }

指定されたキー整数から別の辞書に追加する場合。私たちも記録に参加します。それは完全に非論理的です。

stemWord = st.stem() 

最初の辞書のキーワードであるルート ワードを教えてくれます。リストには、テキスト内のその単語の位置が格納されています。

4

1 に答える 1

7

問題はここにあります:

dictonaryStem.Add(stemWord, record.Value);

辞書の値を元のリストの参照List<T>に設定しています(参照型です)-したがって、そのリストに項目を追加すると、辞書にも表示されます-両方とも同じリストを参照します。

代わりに、辞書の新しいリストを強制的に作成できます。

dictonaryStem.Add(stemWord, record.Value.ToList());
于 2013-03-09T21:06:23.203 に答える