Python使用不区分大小写的搜索集
作者:互联网
我有3集和一个字典.我的布景看起来像这样:
set1 = set(['Bob', 'Jim', 'RALPH'])
set2 = set(['Jill', 'Nadeen', 'WaterBottle'])
set3 = set(['ThisIsOne', 'ThisIsTwo'])
all_names = {'first_one': set1,
'second_one': set2,
'third_one': set3,
'all':set1 | set2 | set3}
#I can make it work if I do this:
r = re.search(input, "','".join(all_names['all'])
if r:
name = all_names[r.group()]
我的用户将传入前三组中的名称之一,或all_names中的键之一.用户传入的名称将不区分大小写,但我需要返回相应的名称,因为它们在集合中大写.如果他们输入了密钥,我没有问题就可以获取名称列表,但是如果用户输入“ nadeen”,是否可以通过all_names [‘all’]轻松(高效)找到它呢?
但是,我的老板认为这不是最好的方法.有办法为此使用理解吗?还有其他想法吗?
解决方法:
好吧,比较幼稚的方法是遍历all_names [‘all’]并进行不区分大小写的检查,如下所示:
input = input.lower()
result = [item for item in all_names['all'] if item.lower() == input]
或者,另一种方法是在包含集合中小写字母的列表中进行搜索:
input.lower() in map(lambda x: x.lower(), all_names['all'])
标签:search,case-insensitive,set,python 来源: https://codeday.me/bug/20191030/1970355.html