Python:检查列表每行中的每个单词,并检查单词是否与字典中的键相同

Python:检查列表每行中的每个单词,并检查单词是否与字典中的键相同,python,list,python-2.7,dictionary,Python,List,Python 2.7,Dictionary,这是我的基本代码 for key in dictionary: #Here key is the actually variable defined in key:value pair for line in list: if key in line: print key 返回的错误值为 如果输入行: TypeError:强制使用Unicode:需要字符串或缓冲区,找到int 我用它来编码非ascii值 unicode = u"\xc3\x81" encoded=

这是我的基本代码

for key in dictionary: #Here key is the actually variable defined in key:value pair
  for line in list:
    if key in line: 
        print key
返回的错误值为

如果输入行: TypeError:强制使用Unicode:需要字符串或缓冲区,找到int

我用它来编码非ascii值

unicode = u"\xc3\x81"
encoded= unicode.encode('utf-8')
我注意到一些typekey是int,所以我希望上面的代码能够修复这个问题

我查阅了很多资料,还没有找到一种方法来检查字典中关键字字符串列表中的每个单词

还有人告诉我不要通过dictionary.keys将字典列为列表
反之亦然。列表中似乎缺少一些代码。最有可能发生的情况是,在代码中的某个地方,您连接了一个unicode字符串和一个int:

a = u"unicode str"
b = 5

print(a + b)
旁注-关于代码:

unicode = u"\xc3\x81"
encoded= unicode.encode('utf-8')
这看起来不对。你的第一行肯定不是unicode——它可能是UTF-8,你想解码


假设您有类似于:

mydict = {"is": 1, "the": 2}

你应该试试:

>>> for line in list:
    for w in line.split(" "):
       print("Word", w, " in key list:", w in mydict.keys())

('Word', 'Line', ' in key list:', False)
('Word', 'is', ' in key list:', True)
('Word', 'the', ' in key list:', True)
('Word', 'first', ' in key list:', False)
('Word', 'Line', ' in key list:', False)
('Word', 'is', ' in key list:', True)
('Word', 'the', ' in key list:', True)
('Word', 'second', ' in key list:', False)
>>>

通常Python会为您处理unicode,这样您就可以比较字符串而不必担心。

是的,我对pusedo代码感到困惑。只是检查了它的相同错误消息可能与您的问题无关,但您应该尽量避免使用内置类的名称命名变量。list是一个用于构建或转换为python列表的类。我认为@kojiro可能要求查看traceback@bsoist这并不是我想要的——之前的编辑有if-key-in-list:和错误消息显示的相同文本:if-key-in-list…。OP更新了代码示例,但一开始忘记了更新错误消息。谢谢你太棒了!我必须把这句话分成几个字,这是有道理的。
list = ["Line is the first", "Line is the second",]
>>> for line in list:
    for w in line.split(" "):
       print("Word", w, " in key list:", w in mydict.keys())

('Word', 'Line', ' in key list:', False)
('Word', 'is', ' in key list:', True)
('Word', 'the', ' in key list:', True)
('Word', 'first', ' in key list:', False)
('Word', 'Line', ' in key list:', False)
('Word', 'is', ' in key list:', True)
('Word', 'the', ' in key list:', True)
('Word', 'second', ' in key list:', False)
>>>