Приведите значения к предложению из словаря - PullRequest
0 голосов
/ 03 февраля 2019

У меня 2 входа, несколько твитов в списке ['tweet 1', 'tweet 2',...] и словарь с {'word1': value1;'word 2': value2;...}.

Представьте, что первый твит выглядит так:

'Я люблю поестьpotato '

И из 500 слов в словаре есть значение для

{...;' love ': 3; ...;' potato': -1; ...}.

Вопрос: как я могу искать в каждой строке, если есть / есть значение / s для предложения, и дать ему окончательную оценку?

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

Думаю, мне нужно начать с этого

Спасибо всем за помощь

Обновлено:

Привет всем, каждый ответ сработал, ноне так, как я хотел.

Мне нужно распечатать как:

print(str(tweet)+"// The total score is: "str(score))

Так, как я могу определить счет?

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 03 февраля 2019

Если я правильно понимаю вашу проблему, то решение ниже:

stream = ['I love tweet 1', 'I loves kt',] # Your input steam if tweets

kv = {'love': 1,'tweet': 2} # Your key value matching pair

print ([x for x in stream if any(j in kv for j in x.split())]) # o/p prints only those stream where atleast a single match is present in stream kv.

# output: ['I love tweet 1']
0 голосов
/ 03 февраля 2019

Вы можете использовать вложенный список понимания , чтобы перебирать каждую строку в списке твитов, добавлять их оценки, если они присутствуют в словаре (это возвращает список оценок)

[sum(d.get(j, 0) for j in i.split()) for i in t]

Или, как предлагает @yuvgin, вы можете создать словарь с твитами в качестве ключей и соответствующими им показателями:

{i : sum(d.get(j, 0) for j in i.split()) for i in t}

Пример

t = ['I love eating potatoes', 'second tweet']
d = {'love': 3,'potatoes': -1}
{i : sum(d.get(j, 0) for j in i.split()) for i in t}
# {'I love eating potatoes': 2, 'second tweet': 0}
...