编程语言
首页 > 编程语言> > Python使用不区分大小写的搜索集

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