如何在搜索字符串时 return 列表列表中的列表并强制比较为小写?

How can I return a list from a list of lists when searching a string and also force the comparison to lowercase?

我有一个这样的列表列表:

allTeams = [ [57, 'Arsenal FC', 'Arsenal', 'ARS'], [58, 'Aston Villa FC', 'Aston Villa', 'AVL'], [61, 'Chelsea FC', 'Chelsea', 'CHE'], ...]

userIsLookingFor = "chelsea"
    
for team in allTeams:
    if userIsLookingFor.lower() in any_element_of_team.lower():
        print(team)
  

> [61, 'Chelsea FC', 'Chelsea', 'CHE']

我基本上会在列表列表中查找用户请求的词,如果有匹配项,我会打印该列表。在上面的例子中,用户搜索“chelsea”,在其中一个列表中,有一个“chelsea”的匹配项(Chelsea FC 或 Chelsea,无关紧要)。所以我会return那个特定的列表。

我尝试使用“any”,但它似乎只是 return 一个布尔值,我实际上无法从中打印任何列表。

您可以使用列表理解:

userIsLookingFor = "chelsea"

# option 1, exact match item 2
[l for l in allTeams if l[2].lower() == userIsLookingFor]


# option 2, match on any word
[l for l in allTeams
 if any(x.lower() == userIsLookingFor
        for s in l if isinstance(s, str)
        for x in s.split())
]

输出:

[[61, 'Chelsea FC', 'Chelsea', 'CHE']]