检查列表中的项目是否在另一个列表中

Pra*_*kwa 1 python list

values = ['Limpets', 'Mussels', 'Phytoplankton', 'Zooplankton', 'Prawn', 'Crab', 'Whelk', 'Seaweed']

keys = ['Whelk ', 'Mussels ', 'Bird ', 'Prawn ', 'Fish ', 'Zooplankton ', 'Crab ', 'Lobster ', 'Limpets ']
Run Code Online (Sandbox Code Playgroud)

我想要的是值不在键中的项目.我试过把它写成:

for item in values:
   if item not in keys:
       print(item)
Run Code Online (Sandbox Code Playgroud)

应该得到的答案是

phytoplankton
seaweed
Run Code Online (Sandbox Code Playgroud)

但我得到的是:

Phytoplankton
Seaweed
Limpets
Mussels
Crab
Whelk
Prawn
Zooplankton
Run Code Online (Sandbox Code Playgroud)

我也尝试将项目存储在列表中,然后打印该列表,但我尝试过的任何内容都不适用于我.我看到了一些使用列表理解的答案,但是我正在学习一门入门课程,所以我得到的就是循环......我使用的是python3.5,如果这有什么不同的话.

Shi*_*dra 5

只需使用套装

set(values).difference(set(keys))
Run Code Online (Sandbox Code Playgroud)

或者对于OP可以使用的这个特定示例

set(values).difference(set([i.strip() for i in keys]))
Run Code Online (Sandbox Code Playgroud)

由于keys列表具有每个项目的尾随空间,因此我们需要清除它.