返回python列表中匹配项的值

2024-10-01 09:32:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个列表myListlookup。你知道吗

我的列表包含我在查找中搜索的项目。比赛不一定要精确。但是一旦找到它,我想从查找中返回值'abc123'。下面是我的实现。我被退货单困住了。你知道吗

myList = ['abc'] 
lookup = ['abc 123', 'efg 456', 'ijk 789'] 


def checkIfinLookup(mylist, lookup):
    for x in mylist:
        if any(x in s for s in lookup):
            return ? 

Tags: 项目in列表forifdeflookupabc
2条回答

我不想使用any()和列表理解:

def checkIfinLookup(mylist, lookup):
    for x in mylist:             
        for s in lookup:                                     
            if x in s:
                return s

如果要返回与子字符串匹配的字符串,则不能使用anyanyx in s时不会保留s的值。你知道吗

可以在搜索迭代器上使用next,如果找不到,None作为默认值。如果不是None,则从函数返回

myList = ['abc']
lookup = ['abc 123', 'efg 456', 'ijk 789']


def checkIfinLookup(mylist, lookup):
    for x in mylist:
        n = next((s for s in lookup if x in s),None)
        if n is not None:
            return n

更好的是,正如Stefan所暗示的,不需要额外的循环和测试,只需在理解中展平两个循环:

def checkIfinLookup(mylist, lookup):
    return next((s for x in mylist for s in lookup if x in s),None)

相关问题 更多 >