python:for-loop没有区分动作

时间:2018-04-28 15:41:56

标签: python dictionary for-loop

我有一个列表prova。 每个列表都有几个元素(字典,字符串,列表)。

特别是我有一个这样的字典:

wordDict={'sky':0, 'blue':0,'water':0,...}

包含评论文档中的所有单词。

我想为每次审核填充wordDict,我试着这样做:

for i in range(len(prova)):
  for word in prova[i][4]:
    prova[i][1][word] += 1

prova[i][4]:是包含评论所有单词的列表的地方;

prova[i][1]:是字典wordDict的地方。

结果是它填充了每个wordDict,但是包含了所有不同评论的所有字词,因此我的所有列表都包含相同的wordDict

而不是这一点,我希望每个评论的每个wordDic t仅由该评论的单词填充,因此彼此不同。

1 个答案:

答案 0 :(得分:1)

给出一个单词词典:

word_dict = {'sky': 0, 'blue': 0, 'water': 0}

给出一个评论列表:

reviews = [
    "the sky is wet water is blue",
    "ice blue silver sky fades into grey",
    "take a look to the sky just before you die"
]

我们可能会将每个评论分成一个单词列表:

review_words = [r.split(' ') for r in reviews]

并计算每次审核相关单词的出现次数:

review_word_dicts = [{k: r.count(k) for k, v in word_dict.items()}
    for r in review_words]

导致:

>>> review_word_dicts

[{'sky': 1, 'blue': 1, 'water': 1},
 {'sky': 1, 'blue': 1, 'water': 0},
 {'sky': 1, 'blue': 0, 'water': 0}]