我有一个问题,将数字的值复制到另一个字典.一切顺利,但是如果密钥已经存在,我只要将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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
从给定的键整数添加到另一个字典时.我们加入了我的记录,也是整数字典UnStem.这是完全不合逻辑的.
stemWord = st.stem()
Run Code Online (Sandbox Code Playgroud)
给我根词,这是第一本词典中的关键词.在列表中存储该文本中的单词的位置.
问题出在这里:
dictonaryStem.Add(stemWord, record.Value);
Run Code Online (Sandbox Code Playgroud)
您的字典值设置为参考原单(List<T>是引用类型) -因此,当您将项目添加到这个列表,它也是在字典中显示出来-均引用同一个列表.
相反,您可以强制为字典创建新列表:
dictonaryStem.Add(stemWord, record.Value.ToList());
Run Code Online (Sandbox Code Playgroud)