我将数字的值复制到另一个字典时遇到问题。 一切顺利,但是如果密钥已经存在,我只要将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()
给我根词,这是第一本词典中的关键词。在列表中存储文本中该单词的位置。
答案 0 :(得分:7)
问题在于:
dictonaryStem.Add(stemWord, record.Value);
您正在将字典值设置为原始列表的引用(List<T>
是引用类型) - 因此当您向该列表添加项目时,它也会显示在字典 - 都引用相同的列表。
相反,您可以强制为字典强制创建新列表:
dictonaryStem.Add(stemWord, record.Value.ToList());