如何通过定义函数在元组列表中查找字符串

How to find a string in a list of tuples by defining a function

这可能很简单,但我想检查元组列表中的现有字符串,然后 return 该字符串出现的相应元组。我还希望它是一个不区分大小写的搜索,这样它就可以在不考虑大小写等的情况下获取字母。 我想定义一个函数来执行此操作,这是我尝试过的:

test_scores = [('Math midterm, 87','math final, 92'),
('english essay, 100','english midterm, 87','english final, 99'),
('science midterm, 95','science final, 100')]

def searchScores(searchString):
    for i in range (len(test_scores)):
        for j in range (len(test_scores[i])):
            if test_scores[i][j].casefold() == searchString.casefold():
                print (test_scores[i])

我希望能够像这样输入我的搜索:

searchScores('math')
searchScores('87')

哪个应该 return:

('Math midterm, 87','math final, 92')
('english essay, 100','english midterm, 87','english final, 99')

然而,当我输入要检查的字符串时,return什么也没做...

如果需要任何说明,请告诉我。谢谢!

我不知道为什么它没有为你显示任何输出,但假设 test_scores 变量是一个包含字符串的“元组列表”,这对我有用。

test_scores = [("abc","def"),("ghi","jkl"),("mno","pqr")]

def searchScores(searchString):
    for tup in test_scores:
        for ele in tup:
            if ele.lower() == searchString.lower():
                print(tup)

st = input("Enter : ")

searchScores(st)

此代码中的函数将在每个元组中搜索搜索字符串。

test_scores =[('math', '87'), ('english', '33'), ('67', 'math')]

def search_scores(scores, searchString):
  lower_scores = [(score[0].lower(), score[1].lower()) for score in scores]
  items = list(filter(lambda x:searchString.lower() in x, lower_scores))

  return items

print(search_scores(test_scores, 'math'))