如何检查值是否在列表中

时间:2015-10-14 10:11:18

标签: python list

我遇到了代码问题。需要做的是:

  • 程序询问您的电影频道名称是什么,
  • 程序询问您收到的代码是什么,
  • 程序会检查您收到的代码是否与您指定的电影频道匹配
  • 程序根据结果返回打印语句。如果找到代码,请打印“匹配”,否则打印“未找到”

我到目前为止的代码是:

def code_controle():
    moviechannel = input("What is the name of your movie channel?")
    code = input("What is the code you want to check?")
    list =  [
        ["RTL8", "20:30", "Rush", "John", "Smith", "123"],
        ["Veronica", "15:00", "V for Vendetta", "Jane", "Smith" , "ABC"]
        ]

现在我需要做的是将moviechannelcode相匹配。

基本上,如果我输入“RTL8”和代码“123”,它应该查看以RTL8开头的所有列表,然后检查我输入的代码,列表中的代码。如果这相互匹配,请打印“匹配”。

5 个答案:

答案 0 :(得分:0)

你可以使用python词典解决这个问题,但继续你的例子:

found=0
for x in list: #note, change this, list is a type def
  if x[0]==code and x[-1]==channel:
      found+=1
      print "Match"
if (found==0):
  print "No match"

答案 1 :(得分:0)

试试这个:

>>> my_list = set([moviechannel] + [code])
>>> for x in list:
...     if len(set(x) & my_list) == 2:
...         print "Match"
... 
Match

答案 2 :(得分:0)

我假设这就是你的意思:

for line in list:
    if moviechannel in line and code in line:
        print('Match')
        return
print('not found')

顺便说一下,您真的应该重新考虑重命名list,因为这也是内置功能。<​​/ p>

答案 3 :(得分:0)

一个简单的解决方案是迭代主列表并检查电影和代码是否都存在于任何子列表中。

Python允许使用in检查列表中的值。它只是if 'value' in list

如果您想经常调用它,编写如下所示的方法可能很有用。

for sublist in list:
    if movie in sublist and code in sublist:
         return True
return False

修改
即使电影和代码值互换,上面的代码也会返回true。如果代码是一个唯一的标识符,它应该没问题,因为没有电影标题会匹配它。

由于列表是通过读取.csv文件生成的,并且我们确信电影将始终是第一项,代码是第六项,我们可以使用以下代码仅精确匹配这些值。

for sublist in list:
    if (movie == sublist[0]) and (code == sublist[5]):
         return True
return False

我会将其包装在try/except中以捕捉任何超出范围的索引,以确保安全。

答案 4 :(得分:0)

这是另一种方法:

new_list = c_list[0] + c_list[1]
if code in new_list and moviechannel in new_list:
    print 'Match'
else:
    print 'Not found'

您不应该使用list,因为list是内置函数,因此我将其更改为c_list