2

我在将数字的值复制到另一个字典时遇到问题。一切顺利,但只要我将值从 List 添加到另一个字典,如果键已经存在。我不明白如何将相同的值添加到字典中以及通过。

   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);
                }
            }
        }

当您从给定的键整数添加到另一个字典时。我们加入我的记录,整数字典也UnStem。这是完全不合逻辑的。

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 回答