(对不起,如果我发错了帖子或在代码中犯了一些严重的错误,这是我的第一周)
我有一个字典,用这段代码获得:
import json
sentimientos=open("Sentimientos.txt")
valores={}
for linea in sentimientos:
termino, valor=linea.split("\t")
valores[termino]=(int(valor)):
print(valores.items())
看起来像这样:
dict_items([('abandon', - 2),('abandoned', - 2),('abandons', - 2),('abducted', - 2)......
但有很多话
然后我有一个单词列表(从推文获得的方法.split(“”)), 我需要检查第二个列表中的每个单词,如果这些单词存在于字典中,如果是,则将其值放入字典中。
我从列表中获得单词的代码是:
tw = open("salida_tweets.txt")
tweets = []
for linea in tw:
clean_tweet = json.loads(linea)
tweets.append(clean_tweet["text"])
words = [tweet.split(" ") for tweet in tweets]
print(words)
我有类似的东西:
[['@ Brenamae_','我','WHALE','SLAP','你','FIN','和','TELL','你','ONE','LAST', 'TIME:' ...
但是,和以前一样,有很多单词
正如我所说,我需要制作一个列表,对于每条推文,打印字典中每个推文单词的值(如果推文有超过1个单词,则为单词的总和)。
我有严重的问题试图这样做。
¡谢谢大家!
PD:我试过的是:import json
sentimientos=open("Sentimientos.txt")
valores={}
for linea in sentimientos:
termino, valor=linea.split("\t")
valores[termino]=(int(valor)):
tw = open("salida_tweets.txt")
tweets = []
for linea in tw:
clean_tweet = json.loads(linea)
tweets.append(clean_tweet["text"])
words = [tweet.split(" ") for tweet in tweets]
if words in valores:
valorestweet.append(sum(valores.get(words) for valor in valores)
我得到的是
<ipython-input-68-30a0230d33a7> in <module>()
19 tweets.append(clean_tweet["text"])
20 words = [tweet.split(" ") for tweet in tweets]
---> 21 if words in valores:
22 valorestweet.append(sum(valores.get(words) for valor in valores))
23 print(valorestweet)
TypeError:不可用类型:'list'
第22和23行用红色标出
答案 0 :(得分:0)
我真的不确定我做对了,但是让我们说你有这样的意见:
tweet0 = "Hello, I am groot"
tweet1 = "My name is red"
tweets = [tweet0, tweet1]
这个词典:
dict = {'Hello': 1, 'I': -2, 'Yellow': -2, 'blue': -5, 'red': 4}
然后预期的输出将是这样的列表:
[推文1的值的总和,推文2的世界值的总和]
如果这真的是你想要的,那么这段代码可以解决问题:
dict = {'Hello': 1, 'I': -2, 'Yellow': -2, 'blue': -5, 'red': 4}
tweet0 = "Hello, I am groot"
tweet1 = "My name is red"
tweets = [tweet0, tweet1]
words = [tweet.split(" ") for tweet in tweets]
Results = list()
for i in range(len(tweets)):
# words[i] are the words from the tweet i
value = 0
for word in words[i]:
if word in dict:
value += dict[word]
Results.append(value)
print (Results)
此示例的输出为:
[-2, 4]
-2因为只有&#34;我&#34;在tweet0和4中出现,因为&#34; red&#34;在tweet1中出现。
正如您所注意到的,因为有一个&#34;,&#34;在&#34;你好&#34;之后,它没有考虑到这个词。这可以通过其他in语句修复,我们也可以在str中添加.lower()方法,以避免大写字母出现任何问题。
由于我不确定你想要什么,我只是做了这个概念验证。如果你能给我们提供明确的例子,我可以改进它。