如何将标记化字符串的输出保存到列表中并将该列表与字典键进行比较?

时间:2018-07-06 12:56:50

标签: python list dictionary output nltk

一串文本被标记,我想将输出x保存到列表中。这样我就可以用字典键来简化列表了 。但是我无法将输出保存到list中。 我尝试了很多事情,可以将预定义列表与字典进行比较,但是我想将令牌字符串的输出保存到list中。我的代码是:

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 :(得分:0)

我不太了解您的用例,我试图根据您的输入和输出来解决它。

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

答案 1 :(得分:0)

我认为您对所使用的概念(例如列表,字典等)还不够熟悉。

变量x用champ_ids替换,因此我们可以直接使用champ_ids = word_tokenize(string)。不要在每个地方都加上括号,因为它在python中有特殊的含义(元组,生成器...)。

在此行之后,champ_ids是一个包含单词的列表。 现在,如果要打印champ_dict中出现的champ_ids中的单词,则必须与字典的键而不是值进行比较:

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)