for index,line in enumerate(status):
for word in line:
if word not in score_dict:
non_sentiment_dictionary[word].extend([original_sentiment[index]])
以上是我的代码..一些背景信息..状态是嵌套列表。它有几个句子,我已经将每个句子中的单词分开,这样每个句子本身就是一个列表。
例如,status = [['我',' Love','你' ],['你''',#39; awesome']
score_dict和non_sentiment_dictionary是字典。例如 score_dict = {' love':5,' awesome':3}
non_sentiment_dictionary的原始字典值为空。
并且,有original_sentiment列表,它只是简单的整数数组。为了简单起见, 让我们说它是满是零的列表。
我想要做的是每个状态行中的每个单词,如果该单词未包含在score_dict中,则使用该单词键修改字典值。在这种情况下,请扩展列表。
例如,如果单词'是'不在score_dict中,我们扩展名单non_sentiment_dictionary ['是']。问题在于,由于某些原因,我不理解non_sentiment_dictionary的增长非常快,因为每次扩展列表时,它似乎都会获得前一个循环的全部值。
这是我放置一些打印语句以了解正在发生的事情之后的结果。
让我们说'天空'已经[0,0,0,0]了。当我们看到“上帝”这个词时,这是第一次在循环中, 我们应该得到[0]。
但是,我得到了以下[0,0,0,0]。它似乎复制了我之前访问过的字典值,即使non_sentiment_dictionary的原始字典值为空。
sky
[0, 0, 0, 0]
god
[0, 0, 0, 0, 0]
非常感谢任何帮助。
答案 0 :(得分:0)
Extend获取一个列表并向其添加另一个列表 - 您希望将值附加到可能尚不存在的简单列表中:
non_sentiment_dictionary.setdefault(word, []).append([original_sentiment[index]])