Как сохранить вывод строки токена в список и сравнить этот список с ключами словаря? - PullRequest
0 голосов
/ 06 июля 2018

строка текста является токенизированной, и я хочу сохранить результат вывода x в список. так что я могу составить этот список с ключами словаря , но я не могу сохранить вывод в список. Я перепробовал много вещей, я могу сравнить предопределенный список со словарем, но я хочу сохранить вывод строки токена в список. мой код:

from  nltk.tokenize import sent_tokenize,word_tokenize

string=input("enter your text: ? ") # I am megan , hello word
x= (word_tokenize(string))
print(x)  # now this can be used to compare with dictioonary

x=[]

champ_ids=x

champ_dict = {"hello" : 0, "Carly" : 36, "Freddy" : 85, "Megan" : 14, "Dilbert" : 69}

for k, v in champ_dict.items():
    if v in champ_ids:
        print(k)       # output hello, megan

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Я думаю, вы недостаточно знакомы с понятиями, с которыми вы работаете, такими как списки, словари и т. Д.

переменная x является избыточной с champ_ids, поэтому мы можем напрямую использовать champ_ids = word_tokenize(string). Не ставьте круглые скобки везде, так как они могут иметь особое значение в python (кортежи, генераторы ...).

после этой строки, champ_ids - список, содержащий слова. Теперь, если вы хотите напечатать слова в champ_dict, которые появляются в champ_ids, вы должны сравнить с ключами вашего dict, а не со значениями:

for k, _ in champ_dict.items():
    if k in champ_ids:
        print(k) 

OR

for k in champ_dict.keys():
    if k in champ_ids:
        print(k) 
0 голосов
/ 06 июля 2018

Я не совсем понимаю ваш вариант использования, я пытался решить его на основе вашего ввода и вывода.

from  nltk.tokenize import sent_tokenize,word_tokenize
string=input("enter your text: ? ")
champ_ids = (word_tokenize(string))
champ_dict = {"hello" : 0, "Carly" : 36, "Freddy" : 85, "Megan" : 14, 
 "Dilbert" : 69}

result = ""
value = 0

for k,v in champ_dict.items():
    if k in champ_ids:
        result += k+" "
        value += v

if value in range(20,30):
    status = "high"
elif value in range(10,20):
    status = "moderate"
elif value in range(0,10):
    status = "low"

print("result = ", result)
print("value = ", value)
print("status = ", status)

выход

result =  hello Megan 
value =  14
status =  moderate
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...