Python在考虑所有单词小写的列表中搜索匹配项
我需要在python列表中搜索一个单词的匹配项。我必须首先将该单词和列表中的所有单词都转换为小写Python在考虑所有单词小写的列表中搜索匹配项,python,string,list,dictionary,Python,String,List,Dictionary,我需要在python列表中搜索一个单词的匹配项。我必须首先将该单词和列表中的所有单词都转换为小写 def check_match(word,words_dict): for w in words_dict: if(word.lower()==w.lower()): return 1 return 0 这是它将得到的最好的结果。您不想将lower操作映射到words\u dict中的所有内容,因为您可能能够更早地确定匹配并退出循环,从而减少
def check_match(word,words_dict):
for w in words_dict:
if(word.lower()==w.lower()):
return 1
return 0
这是它将得到的最好的结果。您不想将lower
操作映射到words\u dict
中的所有内容,因为您可能能够更早地确定匹配并退出循环,从而减少工作量
例如,假设您匹配了words\u dict
的第一个元素:您不想浪费时间来构建类似[w.lower()For w in words\u dict]
的东西,这样您就可以使用in
来表示您正在寻找的条件
我唯一真正做的调整是预先计算一次word.lower()
,这样就不会在循环的每一次过程中都这样做
另外请注意,在Python中,如果将某个内容命名为words\u dict
,而实际上它是一个列表
,则会产生误导。为什么不把它称为“单词”?一种蟒蛇式的方式:
def check_match(word, words_list):
return any( i for i in words_list if i.lower() == word.lower() )
要返回奇异的1
或0
:
def check_match(word, words_list):
found = any( i for i in words_list if i.lower() == word.lower() )
return 1 if found else 0
如果您想要好看的东西,并且真的不在乎性能,您可以尝试:
def check_match(word, words_dict):
return word.lower in [w.lower for w in words_dict]
或:
如果1和0很重要,可以执行
返回int(…)
或int(在调用函数时检查匹配(…)
。为什么不在操作数中使用?你的问题是什么?如果word.lower()==w.lower():
另外,请注意Python有布尔值,为什么返回1
而不是返回True
?
def check_match(word, words_dict):
return word.lower in [w.lower for w in words_dict]
def check_match(word, words_dict):
return word.lower in map(lower, words_dict)