如何在搜索字符串时 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']]
我有一个这样的列表列表:
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']]