我有一张我从excel表中填写的词典。然后,我想知道dict的值中是否存在字符串。每个键的值都是一个列表。
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”,为什么?
谢谢!
答案 0 :(得分:6)
您可以使用in
运算符:
if look_for in value:
答案 1 :(得分:3)
使用Python的in
运算符:
In [1]: values = ['one', 'two', 'three']
In [2]: 'one' in values
Out[2]: True
In [3]: 'someone' in values
Out[3]: False
更新PM_2Ring的评论:以下代码检查字符串是否是列表中任何值的子字符串:
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
详细了解列表推导here。