在列表中搜索字符
Search in a list for characters
我进行了大量搜索,但找不到我想要的东西。我正在使用铁 Python。
我有一大串已提取的字符串 (MyList),我想看看是否有值包含 SearchStrings 字典中的项目。 searchStrings 字典中可能包含 500 多个项目。
MyList = ["123steel","MylistConcrete","Nothinginhere","45","56","steel","CONCRETE"]
SearchStrings = {'concrete' : 'C','CONCRETE' : 'C','Steel' : 'S', 'STEEL' : 'S'}
我需要 return 索引,然后匹配 SearchString 中的代码。
即如果我们找到 'MylistConcrete'
我将知道索引 '1' 并且可以 return 'C'
我希望这对每个人都有意义。如果您需要任何说明,请告诉我
提前致谢,
杰夫
遍历 MyList
中的项目并检查每个项目(小写)是否包含字典的任何(小写)键。然后更换。
这假设您对与键相同的单词没有不同的值(小写/大写差异除外)
my_list = ["123steel", "MylistConcrete", "Nothinginhere", "45", "56", "steel", "CONCRETE"]
search_strings = {'concrete': 'C', 'CONCRETE': 'C', 'Steel': 'S', 'STEEL': 'S'}
for i in range(len(my_list)):
for k, v in search_strings.items():
if k.lower() in my_list[i].lower():
my_list[i] = v
break # avoids completing the loop if first item is found
print(my_list)
结果是
['S', 'C', 'Nothinginhere', '45', '56', 'S', 'C']
for m in MyList :
for k in SearchStrings :
if k.lower() in m.lower() :
print 'found', k, 'in', m, 'result', SearchStrings[k]
首先,我建议您使用 string.lower()
来消除搜索中的大小写依赖。这将使您的词典更小且更易于管理。
然后您可以使用一个简单的 map 函数创建一个包含您的值的新数组,同时保留索引(或者根据需要更改原始数组)。
MyList = ["123steel","MylistConcrete","Nothinginhere","45","56","steel","CONCRETE"]
SearchStrings = {'concrete' : 'C', 'steel' : 'S'}
def check_search_strings(x):
for k, v in SearchStrings.items():
if k in x.lower():
return v
return None
indexes = list(map(check_search_strings, MyList))
print (indexes)
我进行了大量搜索,但找不到我想要的东西。我正在使用铁 Python。
我有一大串已提取的字符串 (MyList),我想看看是否有值包含 SearchStrings 字典中的项目。 searchStrings 字典中可能包含 500 多个项目。
MyList = ["123steel","MylistConcrete","Nothinginhere","45","56","steel","CONCRETE"]
SearchStrings = {'concrete' : 'C','CONCRETE' : 'C','Steel' : 'S', 'STEEL' : 'S'}
我需要 return 索引,然后匹配 SearchString 中的代码。
即如果我们找到 'MylistConcrete'
我将知道索引 '1' 并且可以 return 'C'
我希望这对每个人都有意义。如果您需要任何说明,请告诉我
提前致谢,
杰夫
遍历 MyList
中的项目并检查每个项目(小写)是否包含字典的任何(小写)键。然后更换。
这假设您对与键相同的单词没有不同的值(小写/大写差异除外)
my_list = ["123steel", "MylistConcrete", "Nothinginhere", "45", "56", "steel", "CONCRETE"]
search_strings = {'concrete': 'C', 'CONCRETE': 'C', 'Steel': 'S', 'STEEL': 'S'}
for i in range(len(my_list)):
for k, v in search_strings.items():
if k.lower() in my_list[i].lower():
my_list[i] = v
break # avoids completing the loop if first item is found
print(my_list)
结果是
['S', 'C', 'Nothinginhere', '45', '56', 'S', 'C']
for m in MyList :
for k in SearchStrings :
if k.lower() in m.lower() :
print 'found', k, 'in', m, 'result', SearchStrings[k]
首先,我建议您使用 string.lower()
来消除搜索中的大小写依赖。这将使您的词典更小且更易于管理。
然后您可以使用一个简单的 map 函数创建一个包含您的值的新数组,同时保留索引(或者根据需要更改原始数组)。
MyList = ["123steel","MylistConcrete","Nothinginhere","45","56","steel","CONCRETE"]
SearchStrings = {'concrete' : 'C', 'steel' : 'S'}
def check_search_strings(x):
for k, v in SearchStrings.items():
if k in x.lower():
return v
return None
indexes = list(map(check_search_strings, MyList))
print (indexes)