首页 > 解决方案 > 在字典中找到一个不存在的词来给它一个值

问题描述

下午好,这是一个奇怪的问题,所以我会尽力解释它。

我有 2 个输入,一个列表中的几条推文['tweet 1', 'tweet 2',...]和一个带有{'word1': value1;'word 2': value2;...}.

想象一下第一条推文是这样的:

“我喜欢吃土豆”

从字典中的 500 个单词中,有一个值为

{...;'爱':3;...;'土豆':-1;...}。

这本字典里没有“我”、“吃”这两个词。因此,对于我拥有的每条推文,我需要搜索其中不包含哪些单词,从而为它们提供推文的价值分数。

示例:我喜欢吃土豆 = 2

所以

我= 2

吃=2

我从这个开始:

tweet=[]
values={}
    for list in tweet:
        divided_tweet=list.split()

为了得到分数,我用这个

[sum(valores.get(j, 0) for j in i.split()) for i in divided_tweet]

总而言之,我需要搜索每条推文,每一个不在字典中的单词来给它一个值。

打印出来的应该是:

'I':2

'eating':2

(下一条推文)

'Inexistent word #3':'score of tweet #2' 

'Inexistent word #4':'score of tweet #2'

'Inexistent word #5':'score of tweet #2'

...

等等

有人能帮我吗?

谢谢

PD:有负值和正值

标签: pythonlistdictionary

解决方案


你提到

因此,对于我拥有的每条推文,我需要搜索其中不包含哪些单词,从而为它们提供推文的价值分数。

我假设您有一个包含价值分数的每条推文的字典。示例 - 下面代码中的 tweet_values_dc。如果不是这种情况,请告诉我推文在哪里以及如何被赋予价值分数。

tweets_ls = ['I love eating potatoes', 'I love eating mangoes']
tweet_values_dc = {'I love eating potatoes': 2, 'I love eating mangoes': 3}
missing_words_values_dc = {'love':3,'potatoes':-1}
for atweet in tweets_ls:
    tweet_splited = atweet.split()
    for aword in tweet_splited:
        if aword not in missing_words_values_dc.keys():
            aTweetValue = tweet_values_dc.get(atweet)
            missing_words_values_dc.update({aword:aTweetValue})
print(missing_words_values_dc)

输出

{'love': 3, 'potatoes': -1, 'I': 2, 'eating': 2, 'mangoes': 3}

推荐阅读