在一个字典中find一个值为列表的项目

我有一个字典,我从一个excel表格填写。 然后,我想知道字典的值是否存在string。 每个键的值是一个列表。

import xlrd wb=xlrd.open_workbook('C:\\Inputs_UNF_newForm.xlsx') p=wb.sheet_by_name('Products') def isProduct(look_for): Product = {} Keep = [] (start,end)= rowMatrix("Products") number_of_columns=p.ncols for row in range(start,end): key = str(p.cell(row,0).value) Keep=[] for col in range(1,number_of_columns): value = str((p.cell(row,col).value)) if value !="": Keep.append(value) Product[key] = Keep print(Product) for value in Product.values(): #Doesn't work :( if look_for == value: return "yey" return "nop" 

我的问题是: – 有没有一种方法可以使值成为值而不是值的列表? – 函数返回“nop”,即使我正在查找的string确实存在于其中一个列表中,为什么?

谢谢!

你可以使用in运算符:

 if look_for in value: 

in运算符中使用Python:

 In [1]: values = ['one', 'two', 'three'] In [2]: 'one' in values Out[2]: True In [3]: 'someone' in values Out[3]: False 

更新PM_2Ring的注释:下面的代码检查一个string是否是列表中任何值的子string:

 In [8]: a = lambda s, v: bool(len([ss for ss in v if s in ss])) In [9]: a('one', values) Out[9]: True In [10]: a('someone', values) Out[10]: False In [11]: a('ree', values) #PM 2Ring comment Out[11]: True In [12]: a('Tree', values) Out[12]: False In [13]: a('tree', values) Out[13]: False 

在这里阅读更多关于列表parsing。